我有一个部分,用户可以在其中通过下拉选择筛选不同数据,
我有一个数据数组,如下所示。
const data = [
{
name: 'Trump',
country: 'USA',
age: 70,
IQ: 140,
},
{
name: 'ID Amini',
country: 'Uganda',
age: 50,
},
{
name: 'Kenyatta',
country: 'Kenya',
age: 60,
},
{
name: 'Obama',
country: 'USA',
age: 45,
IQ: 141
}
]
我的目标也是能够获取所有不包含IQ的对象,正如您在上面的数组中看到的,存在不包含IQ的对象。
现场演示:demo
以下是我目前所做的尝试。
let filter = ['empty']; // passed dynamically u can pass eg Obama, kenyata etc etc
let filterTyped ='IQ' // passed dynamically als here u can pass name, country etc etc
let filtredData = filter.forEach((item) =>{
let dataFilter = data.find((element) =>{
//return all objects which does not contain IQ if Item is empyt
if(item === 'empty'){
return element[filterTyped] ==undefined;
}
// return found object
return element[filterTyped] ==item;
})
console.log('Filtred', dataFilter)
if(!dataFilter) return;
})
有什么办法可以解决这个问题吗?
4条答案
按热度按时间ao218c7q1#
这是你要找的吗?
yvfmudvl2#
有两种方法可以实现这一点:
1.使用
hasOwnProperty
方法进行检查:第一个
1.检查并解构:
只使用
IQ
和!IQ
作为返回值时要小心,因为像0
这样的假值将是假的,即使对于保存数值的字段来说这是一个有效值。第一个
一个破碎的例子:
第一个
a0x5cqrl3#
使用
filter()
和hasOwnProperty()
的各种示例6ljaweal4#
参考你的代码片段,错误是
forEach
没有返回值。下面是一个伪代码,你可以把它做得更好。