Javascript 基于对象的数组属性内的值筛选数组中的特定对象
我试图过滤数组中的对象,这些对象包含数组属性中的特定值。 例如,以下是我的对象数组:Javascript 基于对象的数组属性内的值筛选数组中的特定对象,javascript,arrays,Javascript,Arrays,我试图过滤数组中的对象,这些对象包含数组属性中的特定值。 例如,以下是我的对象数组: [ {_id: 1, value: ['Row', 'Column']}, {_id: 2, value: []}, {_id: 3, value: ['Row']}, {_id: 4}, {_id: 5, value: ['Column']} ] 我需要它返回值数组中具有“行”的所有对象,即结果应为: [ {_id: 1, value: ['Row', 'Column']},
[
{_id: 1, value: ['Row', 'Column']},
{_id: 2, value: []},
{_id: 3, value: ['Row']},
{_id: 4},
{_id: 5, value: ['Column']}
]
我需要它返回值数组中具有“行”的所有对象,即结果应为:
[
{_id: 1, value: ['Row', 'Column']},
{_id: 3, value: ['Row']},
]
下面是我执行此操作的方法,但它返回null:
findRowValues() {
let groupObj = [
{_id: 1, value: ['Row', 'Column']},
{_id: 2, value: []},
{_id: 3, value: ['Row']},
{_id: 4},
{_id: 5, value: ['Column']}
];
return groupObj.filter(function (obj) {
return (
obj.value &&
obj.value.find(o => { o === 'Row' })
)
});
}
这是由于
find
的回调中有{}
。可以删除这些内容以获得隐式返回,或者您需要使用return
关键字显式返回。我使用了基于箭头函数的隐式返回
让groupObj=[
{{u id:1,值:['Row','Column']},
{u id:3,值:[]},
{{u id:5,值:['Row']},
{u id:7},
{{u id:8,值:['Column']}
];
函数findRowValues(groupObj){
返回组对象过滤器(函数(obj){
返回(
目标价值&&
obj.value.find(o=>o=='Row')
)
});
}
console.log(findRowValues(groupObj))
使用解构
和包含
方法
函数findRowValues(){
常量groupObj=[
{{u id:1,值:[“行”,“列”]},
{u id:2,值:[]},
{{u id:3,值:[“行”]},
{u id:4},
{{u id:5,值:[“列”]},
];
返回groupObj.filter(({value=[]})=>value.includes(“行”);
}
log(findRowValues())
谢谢,很高兴知道!