数组的api

一、对原数组造成影响的api

  1.push() 在最后添加

  eg: 原数组:      var arr = [5, 20, 6, 5, 80, 4]

    使用push()之后:  arr.push(123);     变为: [5, 20, 6, 5, 80, 4,123]

  2.pop() 取出最后一个
  eg: 原数组:      var arr = [5, 20, 6, 5, 80, 4]
    使用pop()之后:  arr.pop();     变为: [5, 20, 6, 5, 80]
  3.unshift() 在前面添加
  eg: 原数组:      var arr = [5, 20, 6, 5, 80, 4]
    使用unshift()之后:  arr.unshift(123);     变为: [123,5, 20, 6, 5, 80,4]
  4.shift() 取出第一个
   eg: 原数组:      var arr = [5, 20, 6, 5, 80, 4]
    使用shift()之后:  arr.shift();     变为: [20, 6, 5, 80,4]
  5.sort() 方法,对数组排序
    参数为一个回调函数!!!
    如果没有参数:则是按照第一位的ascII码排序
  eg:    原数组:      var arr = [5, 20, 6, 5, 80, 4]
    使用sort():    
               arr.sort(function (val1, val2) {
      // return val1-val2; //val1-val2< 0 ,从小到大排列
      return val2 - val1; //val1-val2> 0 ,从大到小排列
    });
二、不对元素组进行操作
  1.concat 数组的拼接 不会对原数组造成影响
 
   eg:    var arrl = [1,2,3,4];
      var arr2 = [11,12,13,14];
      var newArr = arrl.concat(arr2);
      console.log(newArr);
  
  运行结果:[1, 2, 3, 4, 11, 12, 13, 14]
 
  2.join("") 将数组分割成字符串,按照所填的字符 不会对原数组造成影响
 
  eg: var arrl = [1,2,3,4];
     var arr2=arrl.join("-");
    console.log(arr2);
 
  运行结果:1-2-3-4

  3.toString 将数组转化为字符串,将数组元素用逗号隔开 不改变原数组
 
  eg:    var arrl = [1,2,3,4];
      var arr2= arrl.toString();
      console.log(arr2);
 
  运行结果:1,2,3,4

  4.slice(start,end) 按照下标 数组的截取 不包括end 不会对原数组造成影响
 
  eg:   var arrl = [1,2,3,4];
      console.log(arrl.slice(0,3));
 
 
  运行结果:[1, 2, 3]

  5.splice(start,deleteCount,arr) 从start开始,删除几个 arr新插入的数组元素 操作的是原数组
  eg:    var arrl = [1,2,3,4];
      arrl.splice(1,2,78)
      console.log(arrl);
 
 
  运行结果:[1, 78, 4]
 
三、实例
  
  1. 编写函数norepeat(arr) 将数组的重复元素去掉
  
  var arr = [1, 2, 3, 5, 6, 7, 8, 9, 41, 2, 5, 2, 3, 65, 5, 2, 2, 1, 5, 5, 5, 25, 9, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 6, 5, 2, 5, 5, 5, 4, 41, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];

  function norepeat(arr) {
    while (true) {
      var flag = true;
      for (i = 0; i < arr.length; i++) {
        for (j = i + 1; j < arr.length; j++) {
          if (arr[i] == arr[j]) {
            arr.splice(j, 1);
            flag = false;
           }
        }
      }
    if (flag == true) {
      return arr;
     }
   }
 }
console.log(norepeat(arr));
 2. 快速排序
var arr = [5, 2, 8, 4, 3, 6, 1, 7];
function quickSort(arr) {
  //递归结束条件
  if (arr.length <= 1) {
    return arr;
  }

//取中间的值以及中间的下标
var    midIndex = parseInt(arr.length / 2), //为什么后面是分号,会阻隔数组的定义,而不阻隔 midValue 变量的定义
    midValue = arr[midIndex],
    leftArr = [],
    rightArr = [];
    // 遍历arr数组,每一个值和中间的值相比较,大的放右侧数组,小的放左侧数组
    for (var i = 0; i < arr.length; i++) {
      //如果是中间小标的,跳出本次循环()不用中间值和自身比较
      if (i == midIndex) continue;
      if (arr[i] <= midValue) {
        leftArr.push(arr[i]);
      } else {
        rightArr.push(arr[i]);
      }
    }
    //利用递归处理左右数组
    return quickSort(leftArr).concat(midValue).concat(quickSort(rightArr));
}
console.log(quickSort(arr));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

猜你喜欢

转载自www.cnblogs.com/lxz123/p/11444133.html