簡體   English   中英

如何將嵌套的 arrays 合並到新的 object 中?

[英]How to merge nested arrays into a new object?

我正在努力將嵌套的 arrays 合並到一個新的 object 中。

我有一個包含嵌套對象的數組。 對象包含一個數組。 現在我想將該數組的條目合並到一個新的 object 並為其分配一個值。 例如“假”。 請參閱示例。

當前結構:

const arr = [
        {
            baa: "some",
            foo: ["1", "2", "3"],
        },
        {
            baa: "some",
            foo: [
                "4",
                "5",
                "6",
                "7",
            ],
        },
    ]

目標結構:將“foo”條目合並到 object 並賦值。

const obj = {
    1: false,
    2: false,
    3: false,
    4: false,
    5: false,
    6: false,
    7: false,
};

獲取數組foo並使用forEach迭代並獲取值並使其成為屬性,您可以使用reduce來做到這一點。

 const arr = [ { baa: "some", foo: ["1", "2", "3"], }, { baa: "some", foo: ["4", "5", "6", "7"], }, ]; const result = arr.reduce((acc, curr) => { const { foo } = curr; foo.forEach((el) => (acc[el] = false)); return acc; }, {}); console.log(result);

更具聲明性的答案:

 const arr = [ { baa: "some", foo: ["1", "2", "3"], }, { baa: "some", foo: ["4", "5", "6", "7"], }, ]; // Build `obj` from `arr` const obj = Object.fromEntries( arr.map(val => val.foo).flat().map( key => [key, false] ) ) console.log(obj)

旁注:與 IE11 等舊版瀏覽器不兼容,請參閱此處的報道: https://caniuse.com/mdn-javascript_builtins_object_fromentries

雖然其他答案是正確的,但我發現它們比簡單的雙循環更難閱讀。

let result = {}
for(let obj of arr){
  for(let innerArrElem of obj.foo){
    result[innerArrElem] = false
  }}
}}
function populate(arr, value) {

  return arr.reduce((acc, element) => {

         element.foo.forEach((f) => acc[f] = false);
         return acc;

         }, {})

  }

暫無
暫無

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

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