Javascript 基于具有筛选值的对象筛选数据
我的应用程序中有一些过滤器。无论何时单击搜索,都应根据搜索值筛选数据。我不知道有没有更好的方法来做我想做的事,是用更酷的方式还是用更奇特的方式。搜索值的存储方式如下:Javascript 基于具有筛选值的对象筛选数据,javascript,arrays,json,object,ecmascript-6,Javascript,Arrays,Json,Object,Ecmascript 6,我的应用程序中有一些过滤器。无论何时单击搜索,都应根据搜索值筛选数据。我不知道有没有更好的方法来做我想做的事,是用更酷的方式还是用更奇特的方式。搜索值的存储方式如下: FORM_VALUES = { title: '', name: 'John', Age: 56 } 如果对象的值为空',则在筛选对象数组时不应考虑它们。 我的对象数组如下所示: [ { title:'CEO', name: 'John', Age: 56 },
FORM_VALUES =
{
title: '',
name: 'John',
Age: 56
}
如果对象的值为空'
,则在筛选对象数组时不应考虑它们。
我的对象数组如下所示:
[
{
title:'CEO',
name: 'John',
Age: 56
},
{
title: null,
name: 'George',
Age: 56
},
]
在本例中,它应该返回数组的第一个元素。
我的代码:
data.filter(d => {
if ((d.title === FORM_VALUES.title || FORM_VALUES.title === '')
&& (d.name === FORM_VALUES.name || FORM_VALUES.name === '')
&& (d.age === FORM_VALUES.age || FORM_VALUES.age === '')) {
return d;
}
});
使用
object.entries()
从表单\u VALUES
对象中获取键/值对数组。使用array.each()
迭代成对数组。如果筛选器的值'
(空字符串)或值与当前对象的值匹配,则为每对返回true
const FORM_VALUES={“title”:“name”:“John”,“Age”:56}
const data=[{“title”:“CEO”,“name”:“John”,“Age”:56},{“title”:null,“name”:“George”,“Age”:56}]
const result=data.filter(o=>
Object.entries(FORM_值)
.every([k,v])=>v==''o[k]==v)
)
console.log(result)
使用object.entries()
从表单\u VALUES
对象获取键/值对数组。使用array.each()
迭代成对数组。如果筛选器的值'
(空字符串)或值与当前对象的值匹配,则为每对返回true
const FORM_VALUES={“title”:“name”:“John”,“Age”:56}
const data=[{“title”:“CEO”,“name”:“John”,“Age”:56},{“title”:null,“name”:“George”,“Age”:56}]
const result=data.filter(o=>
Object.entries(FORM_值)
.every([k,v])=>v==''o[k]==v)
)
console.log(result)
使用过滤器
获取具有值的人员,使用对象。键
和删除
删除所有空条目,使用对象查找每个
。条目查找实际对象:
const FORM_值={
标题:“”,
姓名:'约翰',
年龄:56
}
常数数据=[{
标题:“首席执行官”,
姓名:'约翰',
年龄:56
},
{
标题:空,
姓名:'乔治',
年龄:56
}
];
让searchObj={…FORM_VALUES};
Object.keys(searchObj).forEach(key=>searchObj[key]==“”?删除searchObj[key]:key);
const found=data.filter(d=>Object.entries(searchObj).every([k,v])=>d[k]==v));
console.log(找到)
使用过滤器
获取具有值的人员,并使用对象。键
和删除
删除所有空条目,使用对象查找每个
。条目查找实际对象:
const FORM_值={
标题:“”,
姓名:'约翰',
年龄:56
}
常数数据=[{
标题:“首席执行官”,
姓名:'约翰',
年龄:56
},
{
标题:空,
姓名:'乔治',
年龄:56
}
];
让searchObj={…FORM_VALUES};
Object.keys(searchObj).forEach(key=>searchObj[key]==“”?删除searchObj[key]:key);
const found=data.filter(d=>Object.entries(searchObj).every([k,v])=>d[k]==v));
console.log(找到)也许我的问题不清楚。您的答案将只返回一个值,对吗?它应该返回一个数组。在这个例子中,我提供了它只返回第一个值,因为它是唯一一个匹配搜索标准sited@yayfubofubo的值。也许我的问题不清楚。您的答案将只返回一个值,对吗?它应该返回一个数组。在我提供的示例中,它只返回第一个值,因为它是唯一一个匹配搜索标准sited@yayfubofubo的值。