你不知道的JavaScript数组方法

  在JavaScript中数组是使用频率最高的数据结构之一。为了方便我们的开发和使用,ECMA委员会为我们修订和扩展了各种数组方法。这些方法有些比较冷门,有些却非常实用。下面为大家介绍一些你平时可能运用比较少的数组方法。

先介绍几个大家比较熟悉的方法:

sort()

  sort方法用于对数组元素进行排序,它接受传入一个函数,函数的两个参数代表后一个元素与前一个元素,函数的返回值为比较规则,它会改变原数组的值。

let  arr = [4,2,3,8,6,7,5];

 arr.sort((a,b)=>{
     return a-b >0;
  })

console.log(arr); // [2,3,4,5,6,7,8]

  这里值得一说的是很多人对sort方法的内部实现原理会有疑问,但这个方法不同浏览器内部实现的算法是不同的。ecma对各个浏览器sort方法的实现没有具体规定,对稳定性也没有要求。firefox2采用了不稳定的堆排序,firefox3采用了稳定的归并排序,ie排序速度较慢,大家猜测使用的是冒泡排序或插入排序,chrome运用了快速排序和插入排序两种算法,效率和稳定性都是最高的。

map()

  相信这个方法大家比较熟,他是用来遍历数组的,类似的方法还有forEach()。它们的使用使用方法相同,接收传入一个函数,函数有两个参数,其中第一个参数代表当前遍历到的数组元素,第二个参数代表当前元素下标。他不会改变原数组。

var arr =["a","b","c","d"];

arr.map(function(item,index){

 console.log(item,index);

/*  输出内容,forEach用法相同
*   a  0
*   b  1
*   c  2
*   d  3
*/

});

  forEach的用法与map相同

filter()

  用于对数组进行过滤,传入一个函数,函数的返回值代表过滤条件。函数有两个参数分别代表当前元素和下标。它返回一个新数组,不会改变原数组的值。

var arr = [1,2,3,4,5,6,7,8];

arr.filter((item,index)=>{
    return  item%2 == 0;
});  

  输出结果 2,4,6,8

every() 

   返回一个布尔值,只有数组中所有元素都满足给定条件才会返回true,否则返回false.

var arr = [1,2,3,4,5,6,7,8];

arr.every((item,index)=>{
 return typeof item == "number";
});

上面输出结果为true

var arr = [1,2,3,4];

arr.every((item,index)=>{
   return item%2 == 0;
});

上面输出结果为 false.

some()

  与 every方法相反,返回一个布尔值,只要数组中有元素满足给定条件就会返回true,如果都不满足返回 false .

var arr = [1,2,3,4]

arr.some((item,index)=>{
   return item %2==0;
})

上面结果返回 true

var arr = [1,2,3,4];

arr.some((item,index)=>{
   return item<0;
})

上面结果返回 false

find()

  查找数组中第一个满足条件的元素。传入一个函数,只返回数组中首个满足条件的元素。从下标为0开始查找。

  var arr = ["a","c",1,"d",2];

  arr.find((item,index)=>{
     return typeof  item == "number";  
  });

上面输出结果为 1

includes()

用于判断当前数组中是否有某个元素,返回一个布尔值。参数为某个元素值

var arr = ["a","c",1,"d",2];

arr.includes("a");//true

arr.includes(3);// false

相当于 === 匹配,不会隐式对传入的值进行转化。

findIndex()

用于查找满足条件的元素的下标值,传入一个函数,返回下标。

var arr = ["a","c",1,"d",2];

arr.findIndex((item,index)=>{
 return item %2 == 0;
});

上面的输出结果为 4

reduce()

接收一个函数,函数有4个参数: 1.上一次的值 2.当前值 3. 当前值的索引 4.数组

[0,1,2,3,4].reduce(function(a,b,2){

  return a+b; 
})

上面输出结果为 10

fill();

填充数组,传入两个参数。第一个参数表示要填入数组的值,第二个参数表示从第几个元素开始(注意不是下标).

var arr = ["a","c",1,"d",2];

arr.fill("c",2);

console.log(arr);

上面输出结果为 [“a”, “c”, “c”, “c”, “c”] , 它会改变原数组。

  当然,还有一些比较冷门,使用并不广泛或者应用已在广泛使用的方法(poush,popo,indexOf等),在此不一一展示。如果大家还想详细了解数组下的方法,可以使用 console.info(Array.prototype) 来查看当前数组原型下都有哪些方法。

猜你喜欢

转载自blog.csdn.net/tuohai_/article/details/80820243