使用以前的对象值返回新的JS对象



我有一个对象对象(例如(:

const previousMap = {123456: {title: 'Test 1', productID: 123456}, 234567: {title: 'Test 2', productID: 234567}}

并且希望返回一个新对象,每个键都是前一个对象的标题,其值是sku(恰好也是最后一个对象,但我宁愿使用.sku属性(。

例如:

const newMap = {'Test 1' : 123456, 'Test 2': 234567}

我试过:

newMap = Object.entries(previousMap).map(([key, value]) => ({[value.title] : value.productID}))

但最终得到了一系列物体。

这是我觉得我通常能够完成的事情,但我的大脑今天真的不工作了。任何帮助=非常感谢:(

另一种可能的解决方案:
更改映射以返回键和值[k,v]的数组,然后对其调用Object.fromEntries

const previousMap = {
123456: {
title: 'Test 1',
productID: 123456
},
234567: {
title: 'Test 2',
productID: 234567
}
}
let newMap = Object.fromEntries(
Object.entries(previousMap)
.map(([key, value]) => [value.title, value.productID])
);
console.log(newMap)

根据定义,.map将始终返回一个数组。相反,您可以使用.reduce,从一个空对象作为累加器的初始值开始,并在每次迭代中将其扩展到新的返回对象中:

const previousMap = {
123456: {
title: 'Test 1',
productID: 123456
},
234567: {
title: 'Test 2',
productID: 234567
}
}
const newMap = Object.entries(previousMap)
.reduce(
(acc, [key, value]) => ({
...acc,
[value.title]: value.productID
}), {}
);
console.log(newMap);

你也可以通过一个简单的循环来完成这一点,如果你愿意的话,可以继续改变一个对象。

最新更新