使用字典作為別名將物件陣列決議為新表單,但我想知道是否可以在沒有 Object.keys 的情況下完成
const mapper = {
"card_title": "title",
"card_content": "content",
"card_subtitle": "subtitle"
}
const data = [
{
card_title: "wowo1",
card_content: "wowo1",
card_subtitle: "wowo1",
},
{
card_title: "wowo1",
card_content: "wowo1",
card_subtitle: "wowo1",
},
{
card_title: "wowo1",
card_content: "wowo1",
card_subtitle: "wowo1",
},
]
這是我想用擴展運算子更改它的部分
let results = data.map((r) => {
let obj = {};
Object.keys(mapper).map(key =>
obj[mapper[key]] = r[key]
)
return obj;
})
Expected result that i achieved with the code above
[
{ title: 'wowo1', content: 'wowo1', subtitle: 'wowo1' },
{ title: 'wowo1', content: 'wowo1', subtitle: 'wowo1' },
{ title: 'wowo1', content: 'wowo1', subtitle: 'wowo1' }
]
uj5u.com熱心網友回復:
您應該使用Object.entries獲取鍵值對作為陣列,然后使用 Object.fromEntriesmapper在映射鍵使用并保持值不變后獲取新物件。
嘗試如下。
const mapper = {
"card_title": "title",
"card_content": "content",
"card_subtitle": "subtitle"
}
const data = [ { card_title: "wowo1", card_content: "wowo1", card_subtitle: "wowo1", }, { card_title: "wowo1", card_content: "wowo1", card_subtitle: "wowo1", }, { card_title: "wowo1", card_content: "wowo1", card_subtitle: "wowo1", }, ]
const output = data.map((item) =>
Object.fromEntries(
Object.entries(item).map(([key, value]) => [mapper[key], value])
)
);
console.log(output);
uj5u.com熱心網友回復:
在不改變的情況mapper下,您將不得不在資料物件上使用Object.keys()OR mapper。也許您想使用map?
const mapper = new Map()
mapper.set('card_title', 'title')
mapper.set('card_content', 'content')
mapper.set('card_subtitle', 'subtitle')
const data = [
{
card_title: "wowo1",
card_content: "wowo1",
card_subtitle: "wowo1",
},
{
card_title: "wowo1",
card_content: "wowo1",
card_subtitle: "wowo1",
},
{
card_title: "wowo1",
card_content: "wowo1",
card_subtitle: "wowo1",
},
]
const mapped = data.map(d => {
const obj = {}
mapper.forEach((val, key) => {
obj[val] = d[key]
})
return obj
})
console.log(mapped)
使用Map和reduce()
const mapper = new Map()
mapper.set('card_title', 'title')
mapper.set('card_content', 'content')
mapper.set('card_subtitle', 'subtitle')
const data = [{
card_title: "wowo1",
card_content: "wowo1",
card_subtitle: "wowo1",
},
{
card_title: "wowo1",
card_content: "wowo1",
card_subtitle: "wowo1",
},
{
card_title: "wowo1",
card_content: "wowo1",
card_subtitle: "wowo1",
},
]
const mapped = data.map(src => {
return Array.from(mapper).reduce((obj, [from, dest]) => {
obj[dest] = src[from]
return obj
}, {})
})
console.log(mapped)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/427166.html
標籤:javascript 数组 字典 目的
