問題:
給定一個物件數組和一個過濾器對象,我們的目標是根據過濾器對像中指定的多個條件過濾數組元素。然而,目前的實作遇到一個問題,即結果中包含僅滿足條件子集的多個元素。
解決方案:
問題是由錯誤使用引起的過濾函數中的 for (var i = 0; i
為了解決這個問題,我們可以直接迭代filter物件的屬性並檢查每個使用者物件上的屬性是否存在。以下程式碼示範了正確的實作:
<code class="javascript">function filterUsers(users, filter) { var result = []; for (var prop in filter) { if (filter.hasOwnProperty(prop)) { users.forEach(function(user) { if (user[prop] === filter[prop]) { result.push(user); } }); } } return result; }</code>
改進的過濾器函數:
改進的filterUsers函數現在迭代用戶並檢查過濾器物件的每個屬性查看是否與使用者對應的屬性值相符。結果中僅包含所有指定屬性的值都符合的使用者。
範例:
<code class="javascript">var filter = { address: 'England', name: 'Mark', }; var users = [{ name: 'John', email: 'john@example.com', age: 25, address: 'USA', }, { name: 'Tom', email: 'tom@example.com', age: 35, address: 'England', }, { name: 'Mark', email: 'mark@example.com', age: 28, address: 'England', }, ]; var filteredUsers = filterUsers(users, filter); console.log(filteredUsers); // Output: [{ // name: 'Mark', // email: 'mark@example.com', // age: 28, // address: 'England', // }]</code>
此實作確保只有名稱為 Mark 的使用者根據過濾條件的指定,居住在英格蘭的人包含在結果中。
以上是如何在 JavaScript 中根據多個條件過濾物件數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!