[英]Filtering specific objects in an array based on values inside an array property of the object
我正在尝试过滤数组中的对象,这些对象包含数组属性中的特定值。 例如,这是我的对象数组:
[
{_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
关键字。 由于箭头 function,我使用了隐式返回。
let groupObj = [ {_id: 1, value: ['Row', 'Column']}, {_id: 3, value: []}, {_id: 5, value: ['Row']}, {_id: 7}, {_id: 8, value: ['Column']} ]; function findRowValues(groupObj) { return groupObj.filter(function (obj) { return ( obj.value && obj.value.find(o => o === 'Row' ) ) }); } console.log(findRowValues(groupObj))
对于return
关键字 - obj.value.find(o => {return o === 'Row'} )
使用destructuring
和includes
方法
function findRowValues() { const groupObj = [ { _id: 1, value: ["Row", "Column"] }, { _id: 2, value: [] }, { _id: 3, value: ["Row"] }, { _id: 4 }, { _id: 5, value: ["Column"] }, ]; return groupObj.filter(({ value = [] }) => value.includes("Row")); } console.log(findRowValues())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.