[英]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.