数组的过滤:filter 嵌套一个函数fn 满足条件的数据形成新数组
const ac = [100, 200, 300, 400, 500, 600, 700];
function fn(item, index, arr) {
return item > 200;
}
console.log(ac.filter(fn));//[300,400,500,600,700]
数组的映像:map ps:注意不是地图数据类型
同样嵌套一个fn
const ac = [100, 200, 300, 400, 500, 600, 700];
function fn(item, index, arr) {
return item * 2;
}
console.log(ac.map(fn)); //[200,400,600,800,1000,1200,1400]
数组的排序:sort
若从大到小快排则箭头函数里a,b=>b-a
const ac = [100, 300, 200, 500, 400, 600, 700];
console.log(sort((a, b) => a - b));//[100, 200, 300, 400, 500, 600, 700]
数组的增加删除替换 splice splice(index,num, exchange)参数三设定的数据 会替换删除的数据单元 在删除的数据单元位置会整体一次性写入 (替换,插入 ) 会改变原始数组
const ac = [100, 200, 300, 400, 500, 600, 700];
ac.splice(-2, 2, 2, 20); //去除600,700; 加入 2,20
console.log(ac);//[100,200,300,400,500,2,20]
数组的截取:slice( a , b ) 包括开始单元 不包括结束单元 包括下标a,不包括b;若不写b参数则从a截取到结束。不改变原始数组 与 splice不同。
const ac = [100, 200, 300, 400, 500, 600, 700];
console.log(ac.slice(3, 5)); //[400,500]
console.log(ac); //[100, 200, 300, 400, 500, 600, 700]
数组的拼接:concat 原始数组不变;
const ac = [100, 200, 300, 400, 500, 600, 700];
const ad = [800, 900];
console.log(ac.concat(ad)); //[100, 200, 300, 400, 500, 600,800,900]
console.log(ac); //不变 [100, 200, 300, 400, 500, 600, 700]
(冷门)数组的叠加:reduce. arr.reduce(fn(prev,item,index,array),数值)
prev:叠加结果. 叠加结果的变量如果没有赋值 函数会自动获取 数组第一个单元赋值给prev 从第二个单元开始循环 执行叠加操作 (如果prev没存值 则为undefined += 为 NAN)
数值 给prev赋值的
const ac = [100, 200, 300, 400, 500, 600, 700];
function fn(prev, item,index,array) {
prev += item;
return prev;
}
console.log(ac.reduce(fn, 50));//2850;
若无50 则自动赋值给 prev 且少循环一次
数组转字符串 join 不改变原数组
const ac = [100, 200, 300, 400, 500, 600, 700];
const vv = ac.join(`-`);
console.log(vv); //100-200-300-400-500-600-700
字符串转数组 split 不改变原数组
const ac = `abc abcdd`;
const ag = ac.split('c');
console.log(ag); //以c分隔['ab','ab','dd']
还有一些较简单数组函数 如 在数组头部添加数据的 unshift 在尾部添加 push,中间添加可以使用. 在i后面加元素 : splice(i,1,arr[i],num) 或者splice(i+1,0,num)