2015-11-07 10 views
5

別の配列に基づいて1つの配列をフィルタリングする必要があります。ノックアウトのutil関数はありますか?他の私はjavascriptのフィルタ配列が別の配列にない

まず一緒に行く必要があります。

var obj1 = [{ 
    "visible": "true", 
    "id": 1 
}, { 
    "visible": "true", 
    "id": 2 
}, { 
    "visible": "true", 
    "id": 3 
}, { 
    "Name": "Test3", 
    "id": 4 
}]; 

第二:

var obj2 = [ 2,3] 

今私がobj2はに基づいてobj1がフィルタリングする必要があるとOBJ2 omittng 2に含まれていないことOBJ1からアイテムを返します、上記データ中の3(対象1の比較Id

出力:

[{ 
    "visible": "true", 
    "id": 1 
}, { 
    "Name": "Test3", 
    "id": 4 
}]; 

答えて

10

あなたは、単にfilterを使用してobj1介して実行し、それが存在するかどうかを確認するためにobj2indexOfを使用することができます。 indexOfは、値が配列内にない場合は-1を返し、filterには、コールバックがtrueを返すときに項目が含まれます。

var arr = obj1.filter(function(item){ 
    return obj2.indexOf(item.id) === -1; 
}); 
0

OBJ1を反復処理し、反復内のすべてのOBJのIDがOBJ2に存在するかどうかに基づいて、新しい配列を移入する関数を作成し、あなたの出力配列を作成します。

var obj1 = [{ 
    "visible": "true", 
    "id": 1 
}, { 
    "visible": "true", 
    "id": 2 
}, { 
    "visible": "true", 
    "id": 3 
}, { 
    "Name": "Test3", 
    "id": 4 
}]; 

var obj2 = [2,3] 

var select = function(arr) { 
    var newArr = []; 
    obj1.forEach(function(obj) { 
    if obj2.indexOf(obj.id) !== -1 { 
     newArr.push(obj) 
    }; 
    }; 
    return newArr; 
}; 
関連する問題