数组

数组三种创建方法:

  var arr0 = [];                                //  字面量方法创建

  var arr1 = new Array();     //   构造函数实例化对象

  var arr2 = Array();       //   字符串转数组类型

  delete可以删除数组中的元素,因为数组就是伪对象,删除之后元素为empty,不会破环数组的紧密性

 

重构栈方法:

  push(推入最后一项,返回数组新长度)、pop(弹出最后一项,返回弹出的值):

 

 1         // 重写push方法:
 2          var arr = [1,2,3];
 3         function push(arr){
 4             for(var i=1; i<arguments.length;i++){
 5                 arr[arr.length]  = arguments[i];
 6             }
 7             return arr;
 8         }
 9     
10         console.log(push(arr,4,5,6));   
11         // 结果为 [1,2,3,4,5,6]
12 
13         // 重写pop方法
14         var arr = [1,2,3];
15         function pop(arr){
16             var item = arr[arr.length-1];
17             arr.length--;
18             return item;
19         }
20         console.log(pop(arr),arr); 
21         // 结果为[1,2] 3
22     

 

 

 

重构队列方法:

  unshift(推入第一项,返回数组新长度)、shift(取出第一项,返回取出的值):

 

 1         // 重写unshift方法
 2         var arr = [1,2,3,4];
 3         function unshift(arr){
 4             var len = arguments.length-1;
 5             for(var i= arr.length-1;i>=0;i--){
 6                 arr[i+len] = arr[i];
 7             }
 8             for(var j=1;j<arguments.length;j++){
 9                 arr[j-1] = arguments[j];
10             }
11             return arr;
12 
13         }
14         console.log(unshift(arr,4,5,6)); 
15         //   结果为 [4,5,6,1,2,3,4]
16 
17         // 重写shift方法
18         var arr = [1,2,3,4];
19         function shift(arr){
20             var item = arr[0];
21             for(var i =0;i<arr.length;i++){
22                 arr[i] = arr[i+1];
23             }
24             arr.length--;
25             return item;
26         }
27         console.log(shift(arr),arr); 
28         //  结果为 [2,3,4]
29     

 

 

重排序方法:

  reverse()、sort(),这两个方法都会调用toString()方法,然后比较得到后的字符串,即使每一项是数字,比较的也是字符串。

1         var arr = [0,1,10,5,15,9];
2 
3         console.log(arr.reverse());  //  [ 9, 15, 5, 10, 1, 0 ] 
4 
5         console.log(arr.sort());      //  [ 0,  1, 10, 15, 5, 9]

  sort()方法可以接收一个比较函数作为参数,以便确定哪个值位于哪个值的前面。

 1         var arr = [0,1,10,5,15,9];
 2         function compare(value1,value2){
 3             if(value1 < value2){
 4                 return -1;
 5             }else if (value1 > value2){
 6                 return 1;
 7             }else{
 8                 return 0;
 9             }
10         }
11         
12         console.log(arr.sort(compare).toString());    
13         // 输出结果  [0,1,5,9,10,15]

操作方法:

  concat() 连接  、splice(index,howmany,element1,......elementx)  删除 、插入、替换 。index:必需,从何处添加或删除元素;howmany:删除多少元素,可以是0,也可以不写,表示从index删除到最后,elment1-elmentx表示添加的新元素。返回被删除元素的数组。slice(strat,end),表示从strat截取到end但不包含end,而且slice()不改变原数组。

   

 1         var colors = ["red", "green", "blue"];
 2          var removed = colors.splice(0,1);               
 3          // 删除第一项 alert(colors);     
 4          // green,blue alert(removed);    
 5          // red,返回的数组中只包含一项 
 6  
 7         removed = colors.splice(1, 0, "yellow", "orange");   
 8         // 从位置 1 开始插入两项 alert(colors);    
 9         // green,yellow,orange,blue alert(removed);    
10         // 返回的是一个空数组 
11  
12         removed = colors.splice(1, 1, "red", "purple");      
13         // 插入两项,删除一项 alert(colors);    
14         // green,red,purple,orange,blue alert(removed);    
15         // yellow,返回的数组中只包含一项                             

 

位置方法:

  indexof()、lastIndexof()。这两个方法都接收 两个参数:要查找的项和(可选的)表示查找起点位置的索引。其中,indexOf()方法从数组的开头(位 置 0)开始向后查找,lastIndexOf()方法则从数组的末尾开始向前查找。 indexof()、lastIndexof()这两个方法都是用全等比较。

 

迭代方法:

  every():对数组中的每一项运行给定函数,如果该函数对每一项都返回 true,则返回 true。

  filter():对数组中的每一项运行给定函数,返回该函数会返回 true 的项组成的数组。

  forEach():对数组中的每一项运行给定函数。这个方法没有返回值。不遍历空元素,也不遍历属性

  map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的新数组。

  some():对数组中的每一项运行给定函数,如果该函数对任一项返回 true,则返回 true。

  for-in():循环可以把数组的可枚举属性遍历到

  注意: delete删除数组元素,不会造成数组的自动收缩,紧密,数组的长度不会发生改变

归并方法:

  reduce()和 reduceRight()。这两个方法都会迭 代数组的所有项,然后构建一个终返回的值。其中,reduce()方法从数组的第一项开始,逐个遍历 到后。而 reduceRight()则从数组的后一项开始,向前遍历到第一项。

 传给 reduce()和 reduceRight()的函数接收 4 个参数:前一个值、当前值、项的索引和数组对象。这 个函数返回的任何值都会作为第一个参数自动传给下一项。

将类数组转换为数组的方法:

   var  inputs = document.getElementsByTagName("input");

  ES5  

    var  list = Array.prototype.slice.call(inputs);

    var  list = [].slice.call(inputs);

    var  list = Array.prototype.concat.apply([],divs);
    var  list = [].concat.apply([],divs);

  ES6

    var  list = Array.from(inputs);

posted @ 2019-12-29 22:48  早点睡觉吧  阅读(175)  评论(0编辑  收藏  举报