2017-04-01 68 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; }