JS를 사용하여 여러 속성을 필터링하는 다중 필터 기능을 만드는 방법은 무엇입니까?
Aug 21 2020
필터링 할 개체 배열
[
{
"name": "Apple",
"age": 24,
"model": "Android",
"status": "Under development",
},
{
"name": "Roboto",
"age": 24,
"model": "Apple",
"status": "Running",
},
.
.
.
.
]
JS 필터 방법을 사용하여 여러 매개 변수를 사용하여 배열을 필터링해야합니다. 나는 부분적인 해결책을 얻었고 예상되는 출력을 얻지 못했습니다.
여기서 필터는 단일 속성에 대한 여러 값으로도 작동해야합니다. 예 : age = 54,23 또는 model = Android, Apple 등
간단히 말해서, 저는 제품의 모든 속성과 고객이 선택한 태그를 비교하여 필터링 된 제품 목록을 출력 할 수있는 전자 상거래 사이트와 같은 필터 작동을 모방하려고합니다.
어떤 도움이라도 감사합니다. 감사!
답변
3 trincot Aug 21 2020 at 10:49
데이터 배열의 객체처럼 필터 조건의 형식을 지정하지만 값이 가능한 값의 배열 인 경우 filter
다음과 같이 메서드를 사용할 수 있습니다 .
let data = [
{
"name": "Apple",
"age": 24,
"model": "Android",
"status": "Under development",
}, {
"name": "Roboto",
"age": 24,
"model": "Apple",
"status": "Running",
}, {
"name": "Samsung",
"age": 26,
"model": "Blueberry",
"status": "Running",
},
];
let filter = {
"name": ["Roboto", "Ericsson"],
"age": [22, 24, 26],
};
let res = data.filter(obj =>
Object.entries(filter).every(([prop, find]) => find.includes(obj[prop])));
console.log(res);