[英]How to chain map and filter methods for a complex array of objects in Javascript?
我有一個數組如下:
var arr = [
{
subArray1:[
{
subArray2:[
{
value: 1
},
{
value: 0
}
]
},
{
subArray2:[
{
value: 1
},
{
value: 0
}
]
}
]
}
];
我想過濾掉 subArray2 中包含值 1 的所有對象並返回整個數組。 預期的output如下:
newArr= [
{
subArray1:[
{
subArray2:[
{
value: 1
}
]
},
{
subArray2:[
{
value: 1
}
]
}
]
}
]
我無法以這樣的方式鏈接 map 和過濾方法,從而獲得上述所需的 output。 請幫助我實現這一目標。
您需要 map 每個arr
項目和每個arr.subArray1
項目,然后過濾subArray2
:
var arr = [ { subArray1:[ { subArray2:[ { value: 1 }, { value: 0 } ] }, { subArray2:[ { value: 1 }, { value: 0 } ] } ] } ]; console.log( arr.map(({...el}) => { el.subArray1 = el.subArray1.map(({...el1}) => { el1.subArray2 = el1.subArray2.filter(({value}) => value;== 0); return el1; }); return el; }) )
假設只有那些嵌套的 arrays,您可以使用 function reduce
和 function filter
。
const arr = [ { subArray1:[ { subArray2:[ { value: 1 }, { value: 0 } ] }, { subArray2:[ { value: 1 }, { value: 0 } ] } ] }], result = arr.reduce((a, {subArray1}) => { a.push({ subArray1: subArray1.reduce((a, {subArray2}) => { a.push({subArray2: subArray2.filter(({value}) => value === 1)}); return a; }, []) }); return a; }, []); console.log(result);
.as-console-wrapper { max-height: 100%;important: top; 0; }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.