告诉我如何过滤数组

0 javascript arrays filter

需要得到符合这些参数的房屋数组

const houses = [
    {id: 1, name: 'house1', floors: 2, balconies: 1, terrace: 'Y', veranda: 'N'},
    {id: 2, name: 'house2', floors: 1, balconies: "N", terrace: 'N', veranda: 'Y'},
    {id: 3, name: 'house3', floors: 3, balconies: 1, terrace: 'Y', veranda: 'N'},
    {id: 4, name: 'house4', floors: 1, balconies: "N", terrace: 'N', veranda: 'Y'},
    {id: 5, name: 'house5', floors: 1, balconies: "N", terrace: 'Y', veranda: 'N'},
    {id: 6, name: 'house6', floors: 3, balconies: 2, terrace: 'N', veranda: 'N'},
    {id: 7, name: 'house7', floors: 1, balconies: "N", terrace: 'Y', veranda: 'Y'},
    {id: 8, name: 'house8', floors: 2, balconies: 1, terrace: 'N', veranda: 'Y'},
]

const parameters = {floors: 1, terrace: 'Y', veranda: 'Y'}

const filterArray = houses.filter(house => {
    // Code
    
})
Run Code Online (Sandbox Code Playgroud)

我这样试过 Object.entries(parameters).some(e => e == house[e])

我已经糊涂了。我尝试使用includes. 也没什么

我为我的英语道歉

cha*_*tfl 5

一种相当简单的方法是Object.entries()将您的参数对象转换为数组,以便您可以paramsArray.every()filter().

这不需要您知道参数对象中的任何特定属性,甚至不需要知道有多少个,唯一的标准是它们在过滤的对象中都有匹配的值

const houses = [
    {id: 1, name: 'house1', floors: 2, balconies: 1, terrace: 'Y', veranda: 'N'},
    {id: 2, name: 'house2', floors: 1, balconies: "N", terrace: 'N', veranda: 'Y'},
    {id: 3, name: 'house3', floors: 3, balconies: 1, terrace: 'Y', veranda: 'N'},
    {id: 4, name: 'house4', floors: 1, balconies: "N", terrace: 'N', veranda: 'Y'},
    {id: 5, name: 'house5', floors: 1, balconies: "N", terrace: 'Y', veranda: 'N'},
    {id: 6, name: 'house6', floors: 3, balconies: 2, terrace: 'N', veranda: 'N'},
    {id: 7, name: 'house7', floors: 1, balconies: "N", terrace: 'Y', veranda: 'Y'},
    {id: 8, name: 'house8', floors: 2, balconies: 1, terrace: 'N', veranda: 'Y'},
]

const parameters = {floors: 1, terrace: 'Y', veranda: 'Y'};

const paramsArray = Object.entries(parameters)

const filterArray = houses.filter(house => paramsArray.every(([k,v])=> house[k] === v));

console.log(filterArray)
Run Code Online (Sandbox Code Playgroud)