用另一個物件陣列過濾物件陣列
這個問題涉及使用物件陣列(myArray)過濾物件陣列(myArray)我的過濾器)。目標是建立一個新陣列 (myArrayFiltered),其中僅包含 myArray 中與基於 userid 和 projectid 的 myFilter 中對應元素相符的元素。
考慮以下範例:
myArray = [ { userid: "100", projectid: "10", rowid: "0" }, { userid: "101", projectid: "11", rowid: "1" }, { userid: "102", projectid: "12", rowid: "2" }, { userid: "103", projectid: "13", rowid: "3" }, { userid: "101", projectid: "10", rowid: "4" } ]; myFilter = [ { userid: "101", projectid: "11" }, { userid: "102", projectid: "12" }, { userid: "103", projectid: "11" } ];
預期結果是:
myArrayFiltered = [ { userid: "101", projectid: "11", rowid: "1" }, { userid: "102", projectid: "12", rowid: "2" } ];
為了完成這個任務,我們可以使用濾鏡和一些陣列方法。這些方法在現代瀏覽器中廣泛使用,並且針對較舊的瀏覽器存在polyfills。
實作涉及使用filter方法過濾myArray,其中myFilter的每個元素用於與myArray的元素進行比較。然後使用 some 方法來檢查 myArray 中目前元素的 userid 和 projectid 屬性與 myFilter 中對應元素的 userid 和 projectid 屬性之間是否至少存在一個符合。如果存在匹配,則當前元素將包含在過濾結果中。
以下是示範此方法的範例程式碼片段:
<code class="javascript">const myArray = [{ userid: "100", projectid: "10", rowid: "0" }, { userid: "101", projectid: "11", rowid: "1"}, { userid: "102", projectid: "12", rowid: "2" }, { userid: "103", projectid: "13", rowid: "3" }, { userid: "101", projectid: "10", rowid: "4" }]; const myFilter = [{ userid: "101", projectid: "11" }, { userid: "102", projectid: "12" }, { userid: "103", projectid: "11"}]; const myArrayFiltered = myArray.filter((el) => { return myFilter.some((f) => { return f.userid === el.userid && f.projectid === el.projectid; }); }); console.log(myArrayFiltered);</code>
此程式碼將輸出預期結果,提供一個篩選數組,僅包含myArray 中與myFilter 中指定的條件相符的物件。
以上是如何根據另一個數組中的匹配屬性來過濾物件數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!