数组的api

Posted lxz123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组的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));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

以上是关于数组的api的主要内容,如果未能解决你的问题,请参考以下文章

如何格式化要发布到 API 的数组数组?

如何从 API 声明数组来代替硬编码数组?

javadoc简易数组工具类文档(API)

手把手搞懂JavaScript数组的常用API

数组API

JavaScript数组api简单说明