2017-04-01 71 views
-1

这是我的目标:对象的数组转换成目标

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" 
} 

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

+0

请出示你已经尝试了什么。这不是免费的代码写入服务 – charlietfl

回答

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);

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);

0

你可以使用Object.assignArray#map为的单层对象。

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; }