我想将跟随数组转换为稍微修改的对象(见下文)。我也在尝试练习使用扩展运算符,但一直无法弄清楚如何做到这一点。我试图避免使用 lodash(用于教育目的)。
起始数组:
var arr = [
{ mainkey: 'John', val1: 'ABC', val2: '..', val3: '..' },
{ mainkey: 'Mary', val1: 'DEF', val2: '..', val3: '..' },
{ mainkey: 'Ann', val1: 'XYZ', val2: '..', val3: '..' }
];
到最终对象:
newObj = {
John: {val1: 'ABC', val2: '..', val3: '..' },
Mary: {val1: 'DEF', val2: '..', val3: '..' },
Ann: {val1: 'XYZ', val2: '..', val3: '..' }
}
如果不使用扩展运算符,这会很接近,但不是我需要的地方:
var result = arr.reduce(function(map, obj) {
map[obj.mainkey] = obj.val1;
// map[obj.mainkey] = { obj.val1, obj.val2 }; <-- DOESNT WORK
return map;
}, {});
使用扩展运算符,我所做的任何事情都会失败。
其他有帮助内容的帖子: