オブジェクトの配列とフィルタ オブジェクトが与えられた場合、目標はフィルタリングとフィルターで指定された複数の条件に基づいて配列を単純化します。ただし、フィルターに複数のプロパティが含まれている場合、特定の問題が発生します。
次のコード セグメントを検討してください。
function filterUsers(users, filter) {
var result = [];
for (var prop in filter) {
if (filter.hasOwnProperty(prop)) {
// Iterate over the array
for (var i = 0; i 提案された解決策では、フィルターに複数のプロパティが含まれている場合に問題が発生します。具体的には、2 回目の反復中、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