告诉我如何过滤数组

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

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
    
})

回答

一种相当简单的方法是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)


以上是告诉我如何过滤数组的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>