ある配列を別の配列に基づいてフィルタリングする必要があります。knock out にユーティリティ関数はありますか? そうでなければ、JavaScript を使用する必要があります。
初め :
var obj1 = [{
"visible": "true",
"id": 1
}, {
"visible": "true",
"id": 2
}, {
"visible": "true",
"id": 3
}, {
"Name": "Test3",
"id": 4
}];
2番 :
var obj2 = [ 2,3]
ここで、obj2に基づいてobj1をフィルタリングし、上記のデータの2、3を省略してobj2にないobj1のアイテムを返す必要があります(オブジェクト1の比較識別子)
出力:
[{
"visible": "true",
"id": 1
}, {
"Name": "Test3",
"id": 4
}];
ベストアンサー1
存在するかどうかを確認するには、とを単に実行してを使用しますobj1
。値が配列内にない場合は を返し、コールバックが を返す場合は項目を含めます。filter
indexOf
obj2
indexOf
-1
filter
true
var arr = obj1.filter(function(item){
return obj2.indexOf(item.id) === -1;
});
新しい ES 構文と API を使用すると、さらに簡単になります。
const arr = obj1.filter(i => !obj2.includes(i.id))