2017-08-01 74 views
-1

删除重复的值我有对象的一个​​这样的数组:当我的反应成分呈现从对象数组以JavaScript

arr = [ 
    {label: Alex, value: Ninja}, 
    {label: Bill, value: Op}, 
    {label: Cill, value: iopop} 
] 

此数组组成。 i用户Array.prototype.unshift用于在我的数组顶部添加所需的元素。 所以我写arr.unshift({label: All, value: All})。当我的组件第一次呈现我的数组被成功创建,因为我的愿望。但是当我放弃它时,它显示值为{label: All, value: All}的数组是重复的。更具体地说它是这样的:

arr = [ 
    {label: All, value: All}, 
    {label: All, value: All}, 
    {label: Alex, value: Ninja}, 
    {label: Bill, value: Op}, 
    {label: Cill, value: iopop} 
] 

我该如何解决这个问题?我尝试了特定主题中描述的方法,但它不起作用

+1

的[从在javascript对象数组删除重复]可能的复制(https://stackoverflow.com/questions/2218999/remove-duplicates-from-an-array-of -objects-in-javascript) – Teemu

+0

我读过它是相似的,但不完全重复。我的情况不同 – user7334203

+1

是的,当然,他们总是......请添加您尝试过的代码。 – Teemu

回答

2

您可以使用array#reducearray#find

const arr = [ 
 
    {label: 'All', value: 'All'}, 
 
    {label: 'All', value: 'All'}, 
 
    {label: 'Alex', value: 'Ninja'}, 
 
    {label: 'Bill', value: 'Op'}, 
 
    {label: 'Cill', value: 'iopop'} 
 
] 
 

 
var result = arr.reduce((unique, o) => { 
 
    if(!unique.find(obj => obj.label === o.label && obj.value === o.value)) { 
 
    unique.push(o); 
 
    } 
 
    return unique; 
 
},[]); 
 
console.log(result);