js array 数组相关操作汇总

快速新建数组

Array.fill

fill() 方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素,MDN相关参考链接

var array = new Array(10).fill('test').map((v, i) => {
  return {
    number: i
  }
});

新建一个长度为10的数组,用一个固定值test作为填充,fill()方法将会返回一个新的数组:

233725_ckWT_2499632.png

然后使用map函数对数组进行操作,这样就能快速新建长度为10的数组,v的值是'test',i 是序号,从0 开始,如图:

233852_CqaM_2499632.png

Array.from

Array.from() 方法从一个类似数组或可迭代对象中创建一个新的数组实例,MDN参考链接

如:

var array = '123456789';

Array.from(array)得到

Array.from('我是传奇')得到

bbf641c661edd760f0efa12abc48daff88b.jpg

‘123456’ 和 '我是传奇' 都是可迭代对象

创建一个长度为10的数组,下标为2的值为889:

Array.from({ 2:889,length:10 })

dbcd8e14504ace7263ade45ab66d8e9e61b.jpg

再加上一个map函数:

Array.from({ 2:889, length: 10}, (n,i) =>  n + i )

b3ab82ff462112e425e099f561ce9b06575.jpg

数组去重

对单个数组去重,可以使用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]));

 

转载于:https://my.oschina.net/u/2499632/blog/1827351

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值