簡體   English   中英

如何迭代數組?

[英]How can I iterate over an array?

我有這個 JSON 結構:

const arr = [
        {
          id: "TaskStatuses",
          rows: [
            {id: "1", name: "Success"},
            {id: "2", name: "Error"},
          ]
        },
        {
          id: "Objects",
          rows: [
            {id: "1", name: "Object1"},
            {id: "2", name: "Object2"},
          ]
        },
        {
          id: "Groups",
          rows: [
            {id: "1", name: "Group1"},
            {id: "2", name: "Group2"},
          ]
        },
      ]

我需要在某些條件下創建數組。 如果我的條件正確,我將推送元素 arr.rows。

最后我想得到這個結構:

[
{
  Objects: "Object1",
  Groups: "Group1"
},
  {
    Objects: "Object2",
    Groups: "Group2"
  }
]

我試着這樣做

let sites = []
    for (let el in arr) {
            if (arr.id == "Objects") {
              for (let item of el.rows) {
                sites.push({Objects: item.name})
              }
            }
            if (arr.id == "Groups") {
              for (let item of el.rows) {
                sites.Groups = item.name
              }
            }
          }

您可以 map 新對象中的所需屬性。

 const data = [{ id: "TaskStatuses", rows: [{ id: "1", name: "Success" }, { id: "2", name: "Error" }] }, { id: "Objects", rows: [{ id: "1", name: "Object1" }, { id: "2", name: "Object2" }] }, { id: "Groups", rows: [{ id: "1", name: "Group1" }, { id: "2", name: "Group2" }] }], ids = ['Objects', 'Groups'], result = data.reduce((r, { id, rows }) => ids.includes(id)? rows.map(({ name }, i) => ({...r[i], [id]: name })): r, [] ); 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