快速新建数组
Array.fill
fill()
方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素,MDN相关参考链接
var array = new Array(10).fill('test').map((v, i) => {
return {
number: i
}
});
新建一个长度为10的数组,用一个固定值test作为填充,fill()方法将会返回一个新的数组:
然后使用map函数对数组进行操作,这样就能快速新建长度为10的数组,v的值是'test',i 是序号,从0 开始,如图:
Array.from
Array.from()
方法从一个类似数组或可迭代对象中创建一个新的数组实例,MDN参考链接
如:
var array = '123456789';
Array.from(array)得到
Array.from('我是传奇')得到
‘123456’ 和 '我是传奇' 都是可迭代对象
创建一个长度为10的数组,下标为2的值为889:
Array.from({ 2:889,length:10 })
再加上一个map函数:
Array.from({ 2:889, length: 10}, (n,i) => n + i )
数组去重
对单个数组去重,可以使用es6的Set去重
var arr = [1,2,3,4,5,,78,1,,12,4,5,'a','a'];
var newArr = Array.from(new Set(arr));
console.log(newArr);
两个数组去重合并,并集,可以先使用concat将数组合并,再使用Set去重
var arr = [1,2,3,4,5,,78,1,,12,4,5,'a','a'];
var arr1 = [1,2,5,99,0,'a'];
function combine(arr1, arr2){
return Array.from(new Set(arr1.concat(arr2)));
}
console.log(combine(arr,arr1));
找到两个数组中相同的元素,也就是找出两个数组的交集
var arr = [1,2,3,4,5,,78,1,,12,4,5,'a','a'];
var arr1 = [1,2,5,99,0,'a'];
var intersection = new Set(arr.filter((n) => arr1.includes(n)));
console.log(intersection);
找出两个数组中元素的不一样的元素,差集
var arr = [1,2,3,4,5,,78,1,,12,4,5,'a','a'];
var arr1 = [1,2,5,99,0,'a'];
var diffA = new Set(arr.filter((n) => !arr1.includes(n)));
var diffB = new Set(arr1.filter((n) => !arr.includes(n)));
console.log(diffA,diffB);
console.log(new Set([...diffA,...diffB]));