給定一個對象數組和一個過濾器對象,目標是過濾和根據篩選器中指定的多個條件簡化陣列。但是,當過濾器包含多個屬性時,會出現一個特定問題。
考慮以下程式碼段:
function filterUsers(users, filter) {
var result = [];
for (var prop in filter) {
if (filter.hasOwnProperty(prop)) {
// Iterate over the array
for (var i = 0; i 在建議的解決方案中,當過濾器包含多個屬性時會出現問題。具體來說,在第二次迭代期間,users[i][prop] 和 filter[prop] 之間的比較不正確。為了解決這個問題,我們可以將程式碼修改為以下內容:
function filterUsers(users, filter) {
var result = [];
for (var prop in filter) {
if (filter.hasOwnProperty(prop)) {
// Apply filter on the array
users = users.filter((user) => user[prop] === filter[prop]);
}
}
return result;
}
在此版本中,我們利用陣列內建的過濾方法來動態套用篩選條件。這可確保結果中僅包含滿足所有指定條件的物件。
用法範例
使用更新的解決方案,過濾過程將如預期般運作:
var users = [{
name: 'John',
email: '[email protected]',
age: 25,
address: 'USA'
}, {
name: 'Tom',
email: '[email protected]',
age: 35,
address: 'England'
}, {
name: 'Mark',
email: '[email protected]',
age: 28,
address: 'England'
}];
var filter = {
address: 'England',
name: 'Mark'
};
var filteredUsers = filterUsers(users, filter);
console.log(filteredUsers); // Output: [{ name: 'Mark', email: '[email protected]', age: 28, address: 'England' }]
這個解決方案解決了多個篩選條件不適用的問題正確應用,確保產生的篩選數組準確反映指定的條件。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3