JS数组去重你知道有几种方法

1.参考答案一:利用ES6新增数据类型 Set

Set类似于数组,但是成员的值都是唯一的,没有重复的值。

function uniq(arry) {
return […new Set(arry)];
}

2.参考答案二:利用 indexOf

function uniq(arry) {
var result = [];
for (var i = 0; i < arry.length; i++) {
if (result.indexOf(arry[i]) === -1) {
//如 result 中没有 arry[i],则添加到数组中
result.push(arry[i])
}
}
return result;
}

3.参考答案三:利用 includes

function uniq(arry) {
var result = [];
for (var i = 0; i < arry.length; i++) {
if (!result.includes(arry[i])) {
//如 result 中没有 arry[i],则添加到数组中
result.push(arry[i])
}
}
return result;
}

4.参考答案四:利用 reduce

function uniq(arry) {
return arry.reduce((prev, cur) => prev.includes(cur) ? prev : […prev, cur], []);
}

 

 

如何将两个数组对象的相同属性进行操作(更简洁)

 

我们以前可以使用双循环,来判断条件,达到目的,这里我们使用更简洁的方法:

合并数组,然后通过obj[v.name]=obj[v.name]===undefined)判断其条件,将两个数组对象的相同属性将对应的type变为1。

var arr1=[
{name:‘a’},
{name:‘b’},
{name:‘c’}
]
var arr2=[
{name:‘a’,type:‘0’},
{name:‘b’,type:‘0’},
{name:‘d’,type:‘0’}
]
var obj = {};
function get(arr1,arr2){
return […arr1,…arr2].filter(v=>{
if(!(obj[v.name]=obj[v.name]===undefined)){
return v.type=‘1’
}
})
}
console.log(get(arr1,arr2));

 

更多内容请见原文,原文转载自:https://blog.csdn.net/weixin_44519496/article/details/120020213

posted @ 2022-07-18 12:08  忘川信使  阅读(47)  评论(0编辑  收藏  举报