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.那辆车很好