Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于具有筛选值的对象筛选数据_Javascript_Arrays_Json_Object_Ecmascript 6 - Fatal编程技术网

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(找到)