簡體   English   中英

將多個 json arrays 合並為一個數組

[英]Merge multiple json arrays into one array

我有這些 arrays:

const characters = [{
  Tom: {},
  Jerry: {}
}]

const data1 = [{
  Species: 'Cat',
  Gender: 'Male'
}]

const data2 = [{
  Species: 'Mouse',
  Gender: 'Male'
}]

最終數組應如下所示:

const characters = [{
  Tom: {
    Species: 'Cat',
    Gender: 'Male'
  },
  Jerry: {
    Species: 'Mouse',
    Gender: 'Male'
  },
  character3: {
    // data3 here
  },
  character4: {
    // data4 here
  }
}]

如何將數據推送到主陣列中的 position?

如果我有更多的角色,我將有更多的數據要推送,相對於角色。

根據定義,JavaScript object 是零個或多個名稱/值對( 來源 1來源 2 )的無序集合。 它在某些情況下可能有效,但只要您繼續使用characters作為 object 而不是數組,您最終可能會得到一些意想不到的結果。

如果您將方法改為使用characters作為數組,這很容易做到。 我會這樣做:

const characters = ["Tom", "Jerry"];

const data1 = {
  Species: 'Cat',
  Gender: 'Male'
};

const data2 = {
  Species: 'Mouse',
  Gender: 'Male'
};

const characterAssign = (characters, ...datasets) => Object.fromEntries(characters.slice(0, datasets.length).map((character, i) => [character, datasets[i]]));

const charactersObj = characterAssign(characters, data1, data2);
console.log(charactersObj);
// ➞ {Jerry: {Species: "Mouse", Gender: "Male"}, Tom: {Species: "Cat", Gender: "Male"}}
console.log(charactersObj.Jerry);
// ➞ {Species: "Mouse", Gender: "Male"}
console.log(charactersObj.Tom.Species);
// ➞ "Cat"

我們characterAssign的第一部分 function slice(0, datasets.length)確保我們只使用與傳遞到 function 的數據集一樣多的字符。 因此,如果您要傳入只有兩個數據集的["Tom", "Jerry", "Spike"]數組,則“Spike”將從返回的 object 中排除,因為沒有為他提供數據集。 這是質量保證。

接下來,我們 map 將數據集傳遞到 function 到每個字符的索引值( 0,1,… )。 這將為每個字符創建一個 arrays 數組。 最后,所有這些都由Object.fromEntries方法計算並轉換為 object,因此可以在返回的 function 中按名稱引用字符。

首先從數組或字典中取出字符鍵。 兩者都用是沒用的。

之后,您可以循環您的字符鍵,您可以將數據設置為值。

代碼:

    const characters = {Tom: {}, Jerry: {}};
    const multiple_data = [{Species: 'Cat', Gender: 'Male'}, {Species: 'Mouse', Gender: 'Male'}];

    for (i = 0; i < Object.keys(characters).length; i++)
    {
        characters[Object.keys(characters)[i]] = multiple_data[i];
    }

    console.log(characters);

Output:

    [Jerry: {Species: "Mouse", Gender: "Male"}, Tom: {Species: "Cat", Gender: "Male"}]

暫無
暫無

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

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