簡體   English   中英

如何從具有嵌套 arrays 對象的對象數組中獲取所有特定值?

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

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