簡體   English   中英

如何為 Javascript 中的復雜對象數組鏈接 map 和過濾方法?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM