2016-02-26 24 views
0

我有一個包含兩個參數的對象ml_successor和ml_predecessor, 如果兩個參數都匹配,我想刪除對象的重複項。如果兩個參數都匹配,從對象中刪除重複項

下面是我試過的代碼,但即使其中一個參數(ml_successor或ml_predecessor)與其他項目匹配,它也會刪除項目。

var depArr = [{ 
    "ml_predecessor": "0e1cea11-4af4-4bb9-9269-8a1eecc3e848", 
    "ml_successor": "c67c5b33-8e5c-48fc-9178-50eb8379426c" 
}, { 
    "ml_predecessor": "0e1cea11-4af4-4bb9-9269-8a1eecc3e848", 
    "ml_successor": "db1cfd99-1e07-47b7-b9e0-bb84420f454e" 
}, { 
    "ml_predecessor": "0e1cea11-4af4-4bb9-9269-8a1eecc3e848", 
    "ml_successor": "c67c5b33-8e5c-48fc-9178-50eb8379426c" 
}, { 
    "ml_predecessor": "db1cfd99-1e07-47b7-b9e0-bb84420f454e", 
    "ml_successor": "73133d97-b094-41dd-ba2c-c93502a68bfa" 
}, { 
    "ml_predecessor": "0e1cea11-4af4-4bb9-9269-8a1eecc3e848", 
    "ml_successor": "db1cfd99-1e07-47b7-b9e0-bb84420f454e" 
}, { 
    "ml_predecessor": "db1cfd99-1e07-47b7-b9e0-bb84420f454e", 
    "ml_successor": "73133d97-b094-41dd-ba2c-c93502a68bfa" 
}]; 
var dupes = {}, 
    dupes1 = {}, 
    singles = []; 

$.each(depArr, function(i, el) { 
    if (!dupes[el.ml_predecessor] && !dupes1[el.ml_successor]) { 
     dupes[el.ml_predecessor] = true; 
     dupes1[el.ml_successor] = true; 
     singles.push(el); 
    } 
}); 
+1

的[刪除從JavaScript陣列重複]可能的複製(http://stackoverflow.com/questions/9229645/remove-duplicates-from-javascript-array) –

回答

0

使用此:

const singles = []; 
const inArray = (array, item) => { 
    return $.grep(array, (arrayItem) => { 
    return arrayItem.ml_predecessor === item.ml_predecessor && arrayItem.ml_successor === item.ml_successor; 
    }).length > 0; 
}; 
$.each(depArr, (index, item) => { 
    if (!inArray(singles, item)) { 
     singles.push(item); 
    } 
}); 
相關問題