最初のものはオブジェクトの配列です:
let objectArray = [{
FullName: "Person1",
PersonId: "id1"
},
{
FullName: "Person2",
PersonId: "id2"
},
{
FullName: "Person3",
PersonId: "id3"
},
{
FullName: "Person4",
PersonId: "id4"
}
];
2つ目は、いくつかのIDを含む文字列の配列です。
let idsArray= ["id1", "id2", "id3"];
IDが2番目の配列に含まれている最初の配列のオブジェクトを削除する必要があります。
期待される結果:
firstArray = [{
FullName: "Person4",
PersonId: "id4"
}];
Linqjs
ドキュメントを調べてみると、このExcept()
メソッドでは、2番目の配列を「フィルター」として使用して最初の配列から要素を削除できることがわかりました。
このメソッドを使用するにはobjectArray
、IDが含まれidsArray
ている要素のみを含む新しい配列を作成して、パラメーターとして使用する必要があります。
例:
let filteredArray = Enumerable.From(objectArray).Except(theNewArray).ToArray();
この新しい配列を作成するには、Where()
からのメソッドを使用できますLinqjs
。
フィルタリングするIDの配列があることを考えると、この新しい配列を作成する方法がわからないため、問題はここから始まります。
Array.prototype.filter
メソッドをと組み合わせて使用して、除外するIDの配列でプロパティが見つかったindexOf
かどうかをテストできます。PersonId
見つからない場合は、新しいに追加しfilteredArray
ます。たとえば、以下を参照してください。
let objects = [{
FullName: "Person1",
PersonId: "id1"
},
{
FullName: "Person2",
PersonId: "id2"
},
{
FullName: "Person3",
PersonId: "id3"
},
{
FullName: "Person4",
PersonId: "id4"
}
];
let toDelete = ["id1", "id2", "id3"];
//just use Array.prototype.filter method to remove unwanted
var filteredObjects = objects.filter(function(element) {
return toDelete.indexOf(element.PersonId) === -1;
});
console.log(filteredObjects);
これは、バニラJavaScriptを使用して実現されます。linqjsを使用しているのがこれだけの場合は、プロジェクトのコードベースからlinqjsを削除することをお勧めします。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加