Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.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_Lodash - Fatal编程技术网

Javascript 如何按对象数组中的所有属性进行筛选?

Javascript 如何按对象数组中的所有属性进行筛选?,javascript,lodash,Javascript,Lodash,假设我有这样一个数组: const people = [ { "name":"pete22", "age":56 }, { "name":"sonya56", "age":22 } ] 我可以按名称使用lodash进行过滤: let result = people.filter(person =>_.includes(person.name,'56') //{'name':'sonya56

假设我有这样一个数组:

  const people = [
    {
       "name":"pete22",
       "age":56
    },
    {
       "name":"sonya56",
       "age":22
    }
    ]
我可以按名称使用lodash进行过滤:

let result = people.filter(person =>_.includes(person.name,'56')
//{'name':'sonya56'}
如果我想归还任何财产中所有带“56”的人怎么办?那么在上面的例子中,它将返回两个人?我正在寻找一个紧凑的解决方案,也许是lodash

如果我想归还任何财产中所有带“56”的人怎么办

您需要一个包含所有这些属性的数组,以便过滤输入数组

var prop = [ "age", "size" ];
现在只需在循环中应用过滤器

var valueToMatch = "56";
result = people;
prop.forEach( function( key ){
    if ( result.length ) { return true; } //if the result is already empty
    result = result.filter( function( peopleObj ){
       peopleObj[ key ] ==  valueToMatch;
    });
});

result
是使用
prop
数组中给定的所有属性过滤的输出数组。

停止对所有内容使用lodash

JavaScript:

let filtered = people.filter((e) => e.name === ‘foo’ && e.age === 23);

请记住&&force这两个条件,并且| |说其中只有一个必须为真。

您不需要Lodash来实现这一点,因为JavaScript本机支持实现这类功能。 您需要做的是过滤人员,但也要过滤条目中的每个值,例如:

const people=[{
“姓名”:“皮特22”,
“年龄”:56
}, {
“姓名”:“sonya56”,
“年龄”:22
}]
//过滤你的“人”JSON
const filteredPeople=people.filter(person=>{
//过滤“人员”中每个条目内的每个“值”(属性)
返回Object.values(person.filter)(值=>{
//将值转换为字符串并检查它是否包含值“56”
返回值.toString()包括('56')
})
})

console.log(filteredPeople)
任何属性的扩展解决方案数量:

var-people=[
{“姓名”:“皮特22”,“年龄”:56},{“姓名”:“索尼娅56”,“年龄”:22},
{“姓名”:“约翰33”,“年龄”:33},{姓名:“迈克”,“登录”:“56迈克”,“代码”:10}
],
结果=人员。过滤器(功能(o){
返回对象.keys(o).some(函数(k){returnstring(o[k]).indexOf(“56”)!==-1;});
});

控制台日志(结果)我们可以用Object的值再次过滤

people.filter(
hm=>Object.values(hm.filter)(
vl=>(vl+'').indexOf(56)>-1.length>0)

您可以使用with、with字符串并检查with和

const
people=[{姓名:“pete22”,年龄:56},{姓名:“sonya56”,年龄:22}],
filteredPeople=people.filter(person=>Object
.价值观(人)
.map(字符串)
.一些(v=>v.includes('56'))
)

console.log(filteredPeople)这不会检查所有属性。只返回1项,而不是2@bierhierdanke für den hinweis.那辆车很好