我正在尝试使用reduce()从另一个对象创建一个新对象
const FontFamilyMap = {
SansSerif: {
fontFamily: 'arial, helvetica, sans-serif'
},
Serif: {
fontFamily: '"times new roman"'
}
};
const test = Object.keys(FontFamilyMap).reduce((acc, cur) => {
acc[cur] = {style: {fontFamily: FontFamilyMap[cur].fontFamily}};
return acc;
}, {});
console.log(test);
这几乎可以正常工作,但是输出缺少style
对象{fontFamily: FontFamilyMap[cur].fontFamily}
的内部对象,请参见codepen
预期输出应如下所示...
SansSerif: {style: {fontFamily: 'arial, helvetica, sans-serif'}}
答案 0 :(得分:0)
看起来,codepaen不会显示完整的对象,而只是显示Object
的缩写。
要解决此问题,您可以使用JSON.stringify
并使用来获取格式化的对象
console.log(JSON.stringify(test, null, 4));
这种方法可能不会显示功能或其他对象,例如“地图”或“集合”或其他数据结构。
您可以使用代码进行一些小的更改:
使用Object.entries
获取键/值对,
使用Object.assign
并使用
const
FontFamilyMap = { SansSerif: { fontFamily: 'arial, helvetica, sans-serif' }, Serif: { fontFamily: '"times new roman"' } },
test = Object
.entries(FontFamilyMap)
.reduce((acc, [key, style]) => Object.assign(acc, { [key]: { style } }), {});
console.log(test);
.as-console-wrapper { max-height: 100% !important; top: 0; }