2017-08-01 97 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);