一、concat()
concat()方法 连接两个或多个数组 该方法不改变原来数组
let arr1 = [1,2,3];
let arr2 = [4,5,6];
let arr3 = [7,8,9];
let arr4 = arr1.concat(arr2);
console.log(arr1);// [1,2,3]
console.log(arr4);// [1,2,3,4,5,6]
arr4=arr1.concat(arr2,arr3);
console.log(arr4);// [1,2,3,4,5,6,7,8,9]
二、join()
join()方法 把数组中所有元素转化为字符串 通过指定分隔符进行分割 默认为',' 不改变原数组
let arr = [1,2,3]
console.log(arr.join(' '))// '123'
console.log(arr) // [1,2,3]
三、push()
push()方法 向数组末尾添加一个或多个元素 改变原数组 返回值为数组长度
let a = [1,2,3];
let b = a.push('4','5');
console.log(a);// [1,2,3,4,5]
console.log(b);// 5
四、pop()
pop()方法 删除数组最后一个值 改变原数组 返回删除值
let a = [1,2,3];
let b = a.pop();
console.log(a);//[1,2]
console.log(b);//3
五、shift()
shift()方法 删除数组第一个值 改变原数组 返回删除值
let a = [1,2,3];
let b = a.shift();
console.log(a);//[2,3]
console.log(b);//1
六、unshift()
unshift()方法 向数组开头添加一个或多个值 改变原数组 返回数组长度
let a = [2,3,4];
let b = a.unshift('0',1);
console.log(a);//[ '0', 1, 2, 3, 4 ]
console.log(b);//5
七、slice()
slice()方法 获取原数组包含start到end的元素 返回新数组(新数组包含start不包含end) 不改变原数组
let a = [1,2,3,4,5];
let b = a.slice(0,3);
let c = a.slice(-1);
let d = a.slice(-1,2)// 错误写法
console.log(b);// [1,2,3]
console.log(c);// [5]
console.log(d);
八、splice()
splice()方法 删除从index处开始的0个或多个元素 并用参数列表中声明的一个或多个元素进行替换 改变原数组 返回含有删除元素的数组
let a = [1,2,3,4,5,6]
console.log(a.splice(0,2,1)) // 返回由删除元素组成的数组 [1,2]
console.log(a) // splice()方法改变原数组 [1,3,4,5,6]
a = [1,2,3,4,5,6]
console.log(a.splice(0,2,1,2)) // [1,2]
console.log(a) // [1,2,3,4,5,6]
九、sort()
sort()方法 按照Unicode码进行排序 默认为升序
let fruit = ['orange','bananer','apple'];
console.log(fruit.sort()); // ['apple','bananer','orange']
let a = [1,10,21,2];
console.log(a.sort()); // [1,10,2,21]
十、reverse()
reverse()方法 颠倒数组中元素的顺序 改变原数组 返回颠倒后的原数组
let a = [1,2,3];
console.log(a.reverse()); // [3,2,1]
console.log(a); // [3,2,1]
十一、indexOf()和lastIndexOf()
indexOf(arg1,arg2)和lastIndexOf(arg1,arg2)方法 接受两个参数 一个是查找的值 另一个是查找的起始位置。存在 返回查找位置 不存在返回-1indexOf()方法从前往后找 而lastIndexOf()方法从后往前找
let a = [2,1,3,4,2,4,5];
console.log(a.indexOf(6)); // 4
console.log(a.indexOf(2,3));// 2 后面的2
console.log(a.indexOf(2)); // 0
十二、every()
every()方法 对数组每一项都运行给定的函数 每一项返回true 则返回true
const isBig = (value,key,array) =>{// value 当前值 key当前值的索引 array 测试every()方法的数组
return value>10
}
let a = [1,2,10,3];
let b = [11,12,13,14,15,16];
console.log(a.every(isBig)); // false
console.log(b.every(isBig)); // true
十三、some()
some()方法 对数组每一项运行给定的函数 任意一项返回true 则返回true
const isBig = (value,key,array) =>{// value 当前值 key当前值的索引 array 测试some()方法的数组
return value>10
}
let a = [1,2,0,3];
let b = [11,2,13,4,15,6];
console.log(a.some(isBig)); // false
console.log(b.some(isBig)); // true
十四、filter()
filter()方法 对数组每一项运行给定的函数 不改变原数组 返回为true项组成的数组
let a = ['a', 'bb', 'ccc', 'd', 'ee'];
let b = a.filter((e)=>{
return e.length>1
})
console.log(a); // ['a', 'bb', 'ccc', 'd', 'ee']
console.log(b); // ['bb','ccc','ee']
十五、map()
map()方法 对数组每一项运行给定的函数 不改变原数组 返回每一项运行结果组成的新数组
let a = ['a','b','c'];
let b = a.map((e)=>{
return e+'_';
})
console.log(a); // ['a','b','c']
console.log(b); // ['a_','b_','c_']
十六、forEach()
forEach()方法 对数组每一项运行给定函数 不改变原数组 不返回值
let a = ['a','b','c'];
let b = a.forEach((e)=>{
console.log('遍历数组项为:',e);
return e+'_';
})
console.log(a); // ['a','b','c']
console.log(b);// undefined
ES6新增操作数组的方法
一、find()
find()方法 传入回调函数 找到符合条件的第一个元素 不改变原数组 返回符合条件的第一个元素
let a = ['a','b',1,'3'];
let b = a.find((e)=>{
return typeof e === "number"
})
console.log(a); // ['a','b',1,'3']
console.log(b); // 1
二、findIndex()
findIndex()方法 传入回调函数 找到符合条件的第一个元素 不改变数组 返回符合条件的第一个元素下标
let a = ['a','b',1,'3']
let b = a.findIndex((e)=>{
return typeof e === "number"
})
console.log(a); // ['a','b',1,'3']
console.log(b); // 2
三、fill()
fill()方法 用一个固定值value 填充从start到end元素 不包括end 改变原数组 返回填充后的数组
let a= [1,2,3,4,5];
let b = a.fill('a',1,5);
console.log(a); // [1,'a','a','a','a']
console.log(b); // [1,'a','a','a','a']
四、copyWithin()
copyWithin(target,start,end)方法 从原数组target位置开始替换为复制元素 原数组start到end为复制元素(默认从0开始复制) 改变原数组 返回复制后的数组
let a = [1,2,3,4,5];
console.log(a.copyWithin(3,0,2));// [1,2,3,1,2]
console.log(a);// [1,2,3,1,2]
五、form()
from(arg[,fuc])方法 对一个类似数组或可迭代对象创建一个新的浅拷贝实例数组 如果第二个参数存在 则进行回调函数执行
let a = [1,2,3,4,5];
console.log(Array.from(a,(e)=> e+'_')); // [ '1_', '2_', '3_', '4_', '5_' ]
console.log(Array.from('foo')); // [ 'f', 'o', 'o' ]
六、of()
of()方法 用于将一组值转化为数组 补充Array()方法的不足
console.log(Array.of(1,2,3));//[ 1, 2, 3 ]
console.log(Array(3)); //[ <3 empty items> ]
console.log(Array.of(3)); // [ 3 ]
七、entries()
entries()方法 返回新的Array Iteration对象 该对象包含数组每个索引的键值对
let a = [1,2,3];
console.log(a.entries())
for(let i of a.entries()){
console.log(i)//[0,1] [1,2] [2,3]
}
八、values()
values()方法 返回新的Array Iteration对象 该对象包含数组每个索引的值
let a = [1,2,3];
console.log(a.values())
for(let i of a.values()){
console.log(i)// 1 2 3
}
九、keys()
keys()方法 返回新的Array Iteration对象 该对象包含数组每个索引的键
let a = [1,2,3];
console.log(a.keys())
for(let i of a.keys()){
console.log(i) // 0 1 2
}
十、includes()
includes()方法 判断数组是否存在该对象 参数:查找值,起始位置 可以替代Es5的indexOf()方法。indexOf()判断NaN会判断错误
let a = [1,2,3,NaN];
console.log(a.includes(2)) // true
console.log(a.indexOf(NaN)) // -1
console.log(a.includes(NaN))// true
参考资料
[1] segmentfault.com/a/119000001… [2]developer.mozilla.org/zhCN/docs/W…