我需要一些幫助來解決這個問題:)
我想將物件傳輸到陣列。預期的結果應該是:
result = [
{
id: 'test-1',
message: 'test#1.1'
},
{
id: 'test-1',
message: 'test#1.2'
},
{
id: 'test-2',
message: 'test#2.1'
},
{
id: 'test-2',
message: 'test#2.2'
}
]
我明顯的解決方案是使用 objects.keys() 和 map()。不幸的是,這不能按預期作業:
mockData = {
'test-1': [
{
message: 'test#1.1'
},
{
message: 'test#1.2'
}
],
'test-2': [
{
message: 'test#2.1'
},
{
message: 'test#2.2'
}
]
}
const result = Object.keys(this.mockData).map((id) => {
return {
id,
...this.mockData[id],
}
})
console.log(result)
我是否必須在 this.mockData [id] 上放置另一個 map()?我做錯了什么,這里的最佳做法是什么(也許是 reduce()?)?
我希望你能幫幫我
uj5u.com熱心網友回復:
要取消分組,您可以flatMap使用對分組陣列元素Object.entries的嵌套呼叫來取消分組物件。map()
const mockData = { 'test-1': [{ message: 'test#1.1' }, { message: 'test#1.2' }], 'test-2': [{ message: 'test#2.1' }, { message: 'test#2.2' }] };
const result = Object.entries(mockData).flatMap(([id, vs]) => vs.map(v => ({ id, ...v })));
console.log(result);
for...of或者如果您愿意,可以使用回圈
const mockData = { 'test-1': [{ message: 'test#1.1' }, { message: 'test#1.2' }], 'test-2': [{ message: 'test#2.1' }, { message: 'test#2.2' }] };
const result = [];
for (const [id, messages] of Object.entries(mockData)) {
for (const message of messages) {
result.push({ id, ...message });
}
}
console.log(result);
uj5u.com熱心網友回復:
這將回傳期望的解決方案,
const arr = [];
Object.keys(mockData).forEach((key) => {
mockData[key].forEach((data) => {
arr.push({
id: key,
message: data.message
})
})
})
uj5u.com熱心網友回復:
Object.keys(mockData)
.map((id) =>
mockData[id].map((l) => {
return { ...l, id };
})
)
.flat()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/485965.html
標籤:javascript 数组 有角度的 打字稿 目的
上一篇:如何更新陣列中物件的所有值?
下一篇:動態重命名物件中的鍵/值
