[英]How to get the combination of array values from nested arrays in an array of objects
[英]How to get all specific values from an array of objects with nested arrays of objects?
我有一個數組:
const arr = [
{
name: "name 1",
dontShow: true,
children: [
{
name: "name 2",
key4: 4,
dontShow: false,
children: [],
},
],
},
{
name: "name 3",
dontShow: false,
children: [
{
name: "name 4",
dontShow: true,
children: [
{
name: "name 5",
dontShow: false,
children: null,
},
],
},
],
},
];
我需要來自每個 object 的名稱數組,但具有屬性dontShow: true
的名稱除外 所以從那個例子中我希望這樣的數組:
["name2", "name3", "name5"]
基本上,我需要從樹狀結構中獲得一個平面數組,lodash/underscore 解決方案也很棒,我只是沒有找到它們
您可以使用遞歸 function
const arr = [{ name: "name 1", dontShow: true, children: [{ name:"name 2", key4: 4, dontShow: false, children: [], }, ],},{name: "name 3",dontShow: false,children: [{ name: "name 4", dontShow: true, children: [{ name: "name 5", dontShow: false, children: null,},],}, ],},]; let final = (arr, result = []) => { if (Array.isArray(arr)) { arr.forEach(obj => { if (.obj.dontShow) { result.push(obj.name) } if (Array.isArray(obj.children)) { final(obj,children. result) } }) } return result } console.log(final(arr))
您可以通過查看dontShow
獲得一組平面名稱。
const getNames = array => array.flatMap(({ name, dontShow, children }) => [...(dontShow? []: [name]), ...getNames(children || []) ]), array = [{ name: "name 1", dontShow: true, children: [{ name: "name 2", key4: 4, dontShow: false, children: [] }] }, { name: "name 3", dontShow: false, children: [{ name: "name 4", dontShow: true, children: [{ name: "name 5", dontShow: false, children: null, }] }] }], result = getNames(array); console.log(result);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.