我正在开发一个有角度的应用程序。我有一个数组“ * identifyplicate”,就像这样。
[
{
Name: "Jack",
Id: "1"
},
{
Name: "Rose",
Id: "2"
},
{
Name: "Jack",
Id: "4"
},
{
Name: "Jack",
Id: "4"
}
]
如果我使用相同的名称和ID,则要同时删除两者。像上面的例子一样,最后两个索引中的name和id是相同的“ jack”,但是如果name是name和id不同,我不想删除任何数据。像上面的示例一样,我要在数组中保留ID为“ 1”的Jack,但要删除ID为“ 4”的最后两个“ Jack”。我怎样才能做到这一点?
您可以使用多种方法来执行此操作,例如filter,reduce,map等。下面创建两个示例。
第一个是简单的forEach方法。在循环过滤器中,如果存在相同的Name元素,则推送到新数组
在第二个reduce方法中,再次过滤元素(如果存在相同的Name元素),然后推送到新数组。
var arr=[{Name: "Jack",Id: "1"},{Name: "Rose",Id: "2"},{Name: "Jack", Id: "4"},{Name: "Jack", Id: "4"}];
//simple foreach method
var result=[];
arr.forEach(el=>{
if(result.filter(x=>x.Name==el.Name).length==0){result.push(el);}
});
console.log(result);
//reduce method
var result2=arr.reduce((r, { Name, Id }) => {
var temp = r.find(o => Name === o.Name);
if (!temp) { r.push(temp = { Name, Id });}
return r;
}, []);
console.log(result2);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句