簡體   English   中英

在數組和帶有對象的數組上加下划線JS區別

[英]Underscore JS difference on array and array with objects

我有一個帶有某些數字的數組和一個帶有某些對象的數組,看起來像這樣:

var names = [
  { id: 1, name: 'Alex'},
  { id: 2, name: 'John'},
  { id: 3, name: 'Mary'}
];

var blocked_ids = [1, 2];

現在,我想從名稱數組中刪除具有blocked_ids的對象。 因此結果將是這樣的:

[
  { id: 3, name: 'Mary'}
]

如您所見,標識為1和2的對象不見​​了,因為數組“ blocked_ids”包含了這些數字。 如果它只有兩個數組,我可以使用_.difference(),但是現在我必須將blocked_ids與數組對象內部的id進行比較。 有人知道該怎么做嗎?

假設給定的block-ids是一個ID數組,則可以像下面這樣使用reject

var arr = [ { id: 1,
    name: 'Alex'},
  { id: 2,
    name: 'John'},
  { id: 3,
    name: 'Mary'}
];

var block_ids = [1,2];
var result = _.reject(arr, function (obj) {
    return block_ids.indexOf(obj.id) > -1;
}); 

console.log(result);

DEMO

您可以使用_.reject方法來執行此操作。

例如:

_.reject(names, function(name) {
    return blockedIds.indexOf(name.id) > -1;
});

看到這個JSFiddle

純ECMAScript解決方案:

names.filter(function(element) {
    return blocked_ids.indexOf(element.id) === -1}
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM