需要得到符合这些参数的房屋数组
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
. 也没什么
我为我的英语道歉
一种相当简单的方法是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)
归档时间: |
|
查看次数: |
72 次 |
最近记录: |