数组常用方法

61 阅读1分钟

遍历数组

let arr = [1,2,3];

1.forEach
arr.forEach(function(item,index,arr){ // 没有返回值})

2.map    映射,和forEach大致相同,返回一个新数组
let res = arr.map((item,index,arr)=>{
return item*2;
})

3.filter 过滤出符合条件的元素
let res = arr.filter(function(item,index){
  return item%2 === 0;
})
过滤布尔类型为true的项
let arr = [0,'',false,1,3,4];
let res = arr.filter(function(item,index){
return item;
})

4.some  只要有符合的项,就返回true;如果一个都没有返回false
  every 都符合要求,才返回true
let arr = [
{name:'linxi',age,20, done: true},
{name:'linxi',age,20, done: 'no'},
]
let res = arr.some(function(item){
return item.done;
})

let res = arr.every(function(item){
return item.done;
})

reduce 求和计算

let arr = [1,2,3,4];
let res = arr.reduce(function(pre,next,index){
    return pre+next;
})

数组的拼接与截取 (原数组不影响)

拼接
let arr1 = [1,2];
let arr2 = [3,4];
let arr = [...arr1,..arr2]; 
或 arr1.concat(arr2);
console.log(arr); // [1,2,3,4];

截取
let arr = [0,1,2,3,4,5,6,7];
结构1:arr.slice(start,end) 含头不含尾
let newArr = arr.slice(0,3) // =[0,1,2] 
结构2:arr.slice(start) 从start下标开始到最后
结构3:arr.slice() 全部截取

join (原数组不影响)

let arr = [1,2,3,4,5];
let str = arr.join('-'); // 返回新数组
console.log(str) // 1-2-3-4-5

split(原数组不影响)

let str = lin-xi;
let arr = str.split('-');
console.log(str) // ['lin','xi']

数组的增删,翻转,排序 操作(改变原数组)

let arr = [1,2,3];
arr.push(4); // [1,2,3,4] 数组尾部增加值
arr.pop(); // [1,2,3] 数组尾部删除一个元素
arr.unshift(0); // [0,1,2,3] 数组头部增加值arr.shift(); // [1,2,3] 数组头部增加值

arr.reverse();// [3,2,1] 

arr.sort(); // 排序
arr.sort(function(a,b){
    return a-b; // 从小到大排序
    return b-a; // 从大到小排序
})

查找元素在数组中出现的位置

arr.indexOf(ele) === -1 // 说明不存在;元素第一次出现的位置
arr.lastIndexOf() 元素最后一次出现的位置