我试图将数组转换为地图, 该数组看起来像:
var array = [{
"id" : 123
}, {
"id" : 456
}, {
"id" : 789
}];
我尝试构建的最终对象应该如下所示:
var result = {
"123": { id: 123 } ,
"456": { id: 456 } ,
"789": { id: 789 }
};
任何有效的实施方式都将受到赞赏:)
谢谢
答案 0 :(得分:3)
var array = [
{"id" : 123,
"otherProp":"true"
} ,
{"id" : 456,
"otherProp":"false"
} ,
{"id" : 789,
"otherProp":"true"
}];
var result = array.reduce(function (acc, cur, i) {
acc[cur.id] = cur;
return acc;
}, {});
console.log(result);
使用javaScript reduce
reduce()
方法对累加器和数组中的每个元素(从左到右)应用函数以将其减少为单个值。
答案 1 :(得分:2)
使用reduce
var array = [{
"id" : 123
}, {
"id" : 456
}, {
"id" : 789
}];
var expectedValue = {
"123": { id: 123 } ,
"456": { id: 456 } ,
"789": { id: 789 }
};
var result = array.reduce( (acc, c) => (acc[ c.id ] = c, acc) ,{});
console.log('result : ', result);
console.log('(JSON.stringify(expectedValue) === JSON.stringify(result)) ? ', (JSON.stringify(expectedValue) === JSON.stringify(result)));

.as-console-wrapper { max-height: 100%!important; top: 0; }

<强>解释强>
reduce
进行迭代并初始化累加器至{}
id
项的c
,并将值设置为c
本身。