객체 배열과 필터 객체가 주어지면 목표는 필터링하고 필터에 지정된 여러 조건을 기반으로 배열을 단순화합니다. 그러나 필터에 여러 속성이 포함된 경우 특정 문제가 발생합니다.
다음 코드 세그먼트를 고려하세요.
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