JS数组常用方法

47 阅读2分钟

总结一下常见的数组方法

数组常见方法有forEach、map、filter、some、every、reduce、for...in、find、findIndex、for...of、pop、push、shift、unshift、splice、slice等

下面一一详细介绍:

1. forEach:实现每个元素调用fun,没有返回值,不支持使用break和continue
var arr = [1,2,3,4,5]
var newArr = []
arr.forEach(function(elem,index,array){
    var item = elem * index
    newArr.push(item)
})
console.log(newArr) //[0, 2, 6, 12, 20]
2. map:不论如何遍历完所有 返回[新元素+新数组]
var newArr2 = arr.map(function(ele,index,arr){
  // 返回每一个元素
  return {
      num:ele
  }
});

newArr2.png

3. filter:返回符合fun条件的元素数组
var newArr3 = arr.filter(function(val){
  return val%2 === 0
});
// [2, 4]
4. some: 元素中满足一个的判断,数组找true的循环优化(一真即真)
var isOk1 = arr.some(function (ele, index, arr) {
  return typeof ele === 'number';
});
console.log(isOk1);  //true
5. every: 全都满足的判断, 数组找false的循环优化(一假即假)
var isOk2 = arr.every(function(ele,index,arr){
  return typeof ele !== 'number';
});
console.log(isOk2); //false
6. reduce: 接收函数,求和

function一般传两个参数,不传递第二个参数(初始值),则第一轮没有return之前的参数是n1,n2 6-1 累加器

var sum = arr.reduce(function (sum, ele) {
  return sum + ele; // 返回的就是新的sum
}, 0);
console.log('求和的结果是:', sum) //求和的结果是: 15

6-2 获取数组中的最大值

var max = arr.reduce(function(prev,cur){
  Math.max(prev,cur)
})
console.log(max) // 5
7. for...in:遍历数组的时候会将原型下面函数也遍历出来
Array.prototypr.foo = function(){
  console.log("foo")
}
for(let index in arr){
  console.log(index) 
}
7. find:查找元素 参数为元素 索引 原数组
var arr2 = new Array(100).fill(undefined).map(function(ele,i){
  return i + 1;
});

var findEle = arr2.find(function(ele,index,arr){
  return ele === 50;
});
// 找不到就是undefined
if (findEle !== undefined) {
  console.log('findEle:',findEle)
}
8. findIndex:查找索引
var findIndex = arr2.findIndex(function(ele,index,arr){
  return ele === 88;
});
if (findIndex !== -1) {
  console.log('findIndex:索引是',findIndex) // findIndex:索引是 87
}
9. for...of 适用遍历数/数组对象/字符串/map/set等拥有迭代器对象的集合.但是不能遍历对象,因为没有迭代器对象

与forEach()不同的是,它可以正确响应break、continue和return语句

for(let item of arr){
  console.log(item) // 1 2 3 4 5
}
10. pop(弹出尾部元素)、push(在尾部插入)、shift(弹出头部元素)、unshift(在头部插入)
11. splice(删除、插入)、slice(截取)
var arr3 = new Array(100).fill(undefined).map(function(ele,i){
  return i + 1;
});
// 删   // (开始索引,删除几个,...添加的元素)
arr3.splice(110,1)

// 在50之后插入abcde
// arr3.splice(50,0)// 从50开始,删除0个
arr3.splice(50, 0, 'a', 'b', 'c');
console.log(arr3)

//索引可以是负数
console.log(arr4.slice(-20,10)  ); // 81~11

// slice方法截取元素
// 需要索引40~50之间
console.log('需要索引40~50之间:', arr3.slice(40, 50))