将对象数组转换为对象

时间:2017-04-01 14:56:44

标签: javascript typescript

这是我的目标:

initialState:any = [{'checked':true}, {'checked':false}, {'checked':true}, {'checked':false}, {'checked':true}, {'checked':false}];

这是我期望的输出:

var params = {
    "device0":"true",
    "device1":"true",
    "device2":"false",
    "device3":"true",
    "device4":"false",
    "device5":"true",
    "device6":"false",
    "device7":"true"
}

我有一个对象数组。我想从一个对象中获取值,并希望构建如上所述的单个对象。

3 个答案:

答案 0 :(得分:1)

您提供的数组中的少数记录与预期的结果不同。

var initialState = [{'checked':true},{'checked':false},{'checked':true},{'checked':false},{'checked':true},{'checked':false}],
    params = {};
    
    initialState.forEach((v,i) => params['device' + i] = v.checked);
    console.log(params);

答案 1 :(得分:0)

我会使用reduce

var initialState = [{'checked':true},{'checked':false},{'checked':true},{'checked':false},{'checked':true},{'checked':false}],
   params = initialState.reduce( function( o, item, index ) {
       o["device" + index] = item.checked
       return o;
   }, {})

console.log(params);

答案 2 :(得分:0)

您可以使用Object.assignArray#map作为sinlge对象。

var any = [{ checked: true }, { checked: false }, { checked: true }, { checked: false }, { checked: true }, { checked: false }],
    params = Object.assign({}, ...any.map((a, i) => ({ ['device' + i]: a.checked.toString() })));
    
console.log(params);
.as-console-wrapper { max-height: 100% !important; top: 0; }