我有以下資料傳入(為了更容易理解,減少了物件)。我的屬性可能包括數百至數千條屬性。
teams = {
teams: ['Lakers', 'Clippers', 'Bucks', 'Suns'],
states: ['California', 'California', 'Wisconsin', 'Arizona']
}
請注意,這些屬性將始終包含每個專案的相同數量。
我想把它轉換為一個物件的陣列串列:
我想把它轉換為一個物件的陣列串列。
teamsList = [
{ teams: 'Lakers', states: 'California' },
{ teams: 'Clippers', states: 'California' },
{ teams: 'Bucks', states: 'Wisconsin' },
{ teams: 'Suns', states: 'Arizona' }
]
這是我最初的想法和嘗試:
const parseData = (obj)=> {
const teams = obj.teams;
const states = obj.states;
let newArrayList = [];
teams.forEach((item, index) => {
const teamData = {
teams: item,
states: states[index] 。
}
newArrayList.push(teamData)。
})
return newArrayList;
我想知道是否有一個更理想的方法來做到這一點?
忘了補充,我正在尋找方法,以便新陣列串列中的每個物件屬性也應該是動態的,比如確定新物件的鍵,而不需要寫每個具體的屬性:
teams.forEach((item, index) =>/span> {
const teamData = {
teams: item,
states: states[index],
n: n[index].
}
newArrayList.push(teamData)。
})
其中n對應于任何可能的物件鍵的數量。
謝謝你。
uj5u.com熱心網友回復:
這個解決方案的作業原理是首先確定最長陣列的長度,然后根據你的資料中可用的鍵來動態創建新的物件:
。const data = {
球隊: ['Lakers', 'Clippers', 'Bucks', 'Suns'],
states: ['California', 'California', 'Wisconsin', 'Arizona']
};
const result = [
...Array(Object.values(data)。 reduce((a, {length}) => Math。 max(a, length), 0)。
].map((_, i) =>/span> Object. keys(data).reduce((a, k) => ({...a, [k]: data[k][i]}), {}) 。)
console.log(result);
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
uj5u.com熱心網友回復:
映射其中一個陣列,并使用索引在另一個陣列中找到匹配的值,然后回傳一個物件。
。const teams = {
teams: ['Lakers', 'Clippers', 'Bucks', 'Suns'],
states: ['California', 'California', 'Wisconsin', 'Arizona']
};
const teamList = teams.teams. map((t, i) => ({ teams: t, states: teams. states[i] })。
console.log(teamList);
<iframe name="sif2" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
如果你有很多屬性,就在條目上迭代。
。const teams = {
teams: ['Lakers', 'Clippers', 'Bucks', 'Suns'],
states: ['California', 'California', 'Wisconsin', 'Arizona']
};
const entries = Object.entries(team)。
const [key, arr] = entries.shift()。
const teamList = arr. map((val, i) => Object.fromEntries(
[[key, val]].concat(
entries.map(entry => [entry[0], entry[1][i])
)
));
console.log(teamList);
<iframe name="sif3" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
uj5u.com熱心網友回復:
使用Array.map(),它將迭代每個元素并回傳最終的物件陣列。
teams = {
teams: ['Lakers', 'Clippers', 'Bucks', 'Suns'],
states: ['California', 'California', 'Wisconsin', 'Arizona']
};
const parseData=(obj)=> {
const states = teams.states;
return obj.teams. map((teams, index) => ({ teams, states: states[index] });
}
console.log(parseData(team));
<iframe name="sif4" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/312752.html
標籤:
上一篇:按引數創建一個物件陣列
