簡體   English   中英

合並 arrays 內的對象,這些對象位於數組內

[英]Merge objects inside arrays, which are inside an array

目前我有一個小問題,我不太能夠解決。 我有一個數組,它可以包含單個或多個 arrays,它可以包含多個對象。 例如:

const arr = [
  [
    {
      "value": "value A"
    },
    {
      "value": "value B"
    },
    {
      "value": "value C"
    }
  ],
  [
    {
      "value": "value A"
    },
    {
      "value": "value B"
    },
    {
      "value": "value C"
    }
  ]
]

我想將基於特定屬性(此處為“值”)的對象合並到一個數組中,這樣我的結果將如下所示:

const result = ["value A", "value B", "value C", "value A", "value B", "value C"]

有人對此有想法嗎? 謝謝!

 const arr = [ [ { "value": "value A" }, { "value": "value B" }, { "value": "value C" } ], [ { "value": "value A" }, { "value": "value B" }, { "value": "value C" } ] ] let x = arr.flat().map(v=>v.value); console.log(x);

我相信你想要的結果是一個數組,而不是 object。 您的 output 示例無效。

無論如何,使用簡單的減少:

 const arr = [ [ { "value": "value A" }, { "value": "value B" }, { "value": "value C" } ], [ { "value": "value A" }, { "value": "value B" }, { "value": "value C" } ] ] const result = arr.reduce((acc, cur) => { const values = cur.map(({value}) => value); return acc.concat(values) }, []); console.log(result);

像這樣?

const arr = [
  [
    {
      "value": "value A"
    },
    {
      "value": "value B"
    },
    {
      "value": "value C"
    }
  ],
  [
    {
      "value": "value A"
    },
    {
      "value": "value B"
    },
    {
      "value": "value C"
    }
  ]
]

function mergeArray( arr, property ) {
  const res = [];
  for (const innerArr of arr) {
    for (const obj of innerArr) {
      res.push(obj[property]);
    }
  }
  return res;
}

console.log(mergeArray(arr, "value"));

我使用 Array.prototype 的嵌套 reduce 和 map 方法

 { const arr = [ [{ "value": "value A" }, { "value": "value B" }, { "value": "value C" } ], [{ "value": "value A" }, { "value": "value B" }, { "value": "value C" } ] ]; const newArr = arr.reduce((carry, item) => { carry.push(...item.map(item2 => item2.value)) return carry; }, []) console.log(newArr) }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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