将数组映射到对象,使用数组值作为键
Map an array to an object, using array values as keys
我有
const menu = ['home', 'news', 'about'];
我想把它映射到这个:
let menuExt =
{
home: Common.locs['home'],
news: Common.locs['news'],
about: Common.locs['about']
};
我该怎么做?我试过了
let menuExt = menu.map(item => {
return {
item: Common.locs[item]
}
});
但我得到一个数组,其中“item”为 属性,但我想要一个具有属性 home、news、about... 的对象(还有很多,但我在这里将其缩短)
我是这样管理的,但我不知道是否有更干净、更快的解决方案:
let menuExt = {}
menu.forEach((item) => {
menuExt[item] = Common.locs[item]
});
惯用的方法是使用 Array.reduce
,因为您要获取对象数组并返回单个对象。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce
const menu = ['home', 'news', 'about'];
const menuExt = menu.reduce((acc, key) => {
acc[key] = Common.locs[key];
return acc;
}, {});
menu.map(item => {menuExt[item]=Common.locs[item]});
我有
const menu = ['home', 'news', 'about'];
我想把它映射到这个:
let menuExt =
{
home: Common.locs['home'],
news: Common.locs['news'],
about: Common.locs['about']
};
我该怎么做?我试过了
let menuExt = menu.map(item => {
return {
item: Common.locs[item]
}
});
但我得到一个数组,其中“item”为 属性,但我想要一个具有属性 home、news、about... 的对象(还有很多,但我在这里将其缩短)
我是这样管理的,但我不知道是否有更干净、更快的解决方案:
let menuExt = {}
menu.forEach((item) => {
menuExt[item] = Common.locs[item]
});
惯用的方法是使用 Array.reduce
,因为您要获取对象数组并返回单个对象。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce
const menu = ['home', 'news', 'about'];
const menuExt = menu.reduce((acc, key) => {
acc[key] = Common.locs[key];
return acc;
}, {});
menu.map(item => {menuExt[item]=Common.locs[item]});