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