我從嵌套循環推不同的值對象,導致這樣的事情:轉換數組key/value對
obj = ["blue", 1, "red", 4, "yellow", 2, "green", 7];
,但我想它返回這樣的:
obj = [{"blue": 1}, {"red": 4}, {"yellow": 2}, {"green": 7}];
我必須手動構建該語法還是有更快的方法?
我從嵌套循環推不同的值對象,導致這樣的事情:轉換數組key/value對
obj = ["blue", 1, "red", 4, "yellow", 2, "green", 7];
,但我想它返回這樣的:
obj = [{"blue": 1}, {"red": 4}, {"yellow": 2}, {"green": 7}];
我必須手動構建該語法還是有更快的方法?
使用一個簡單的for循環。
var obj = ["blue", 1, "red", 4, "yellow", 2, "green", 7];
var res = [];
for (var i = 0; i < obj.length; i += 2) {
var o = {};
o[obj[i]] = obj[i + 1];
res.push(o);
}
console.log(res);
Array.from()
使用方法的ES6溶液。
let obj = ["blue", 1, "red", 4, "yellow", 2, "green", 7];
console.log(Array.from({ length: obj.length/2 }, (_, i) => ({ [obj[2 * i]]: obj[2 * i + 1] })));
利用for循環acieve像
var obj = ["blue", 1, "red", 4, "yellow", 2, "green", 7];
var newObj = []
for(var i = 0; i < obj.length; i+=2) {
var temp = {};
temp[obj[i]] = obj[i + 1];
newObj.push(temp);
}
console.log(newObj);
結果您可以使用此
var obj = ["blue", 1, "red", 4, "yellow", 2, "green", 7];
var newObj = [];
var itemValue,itemName = '';
$(obj).each(function(index, item){
if(index % 2 == 0){
if(itemName != ''){
var newObjEle = {};
newObjEle[itemName] = itemValue;
newObj.push(newObjEle);
}
itemName = item;
}
else{
itemValue = item
}
})
console.log(newObj);
一種方法是用空JSON對象數組初始化結果,然後遍歷它以填充對象。
var obj = ["blue", 1, "red", 4, "yellow", 2, "green", 7];
var result = Array.apply(null, Array(obj.length/2)).map(i => ({}));
result.forEach((c, i, a) => (a[i][obj[2 * i]] = obj[2 * i + 1]));
console.log(result);
檢查這一點,
obj = ["blue", 1, "red", 4, "yellow", 2, "green", 7];
result = [];
for (i = 0; i < obj.length; i++) {
if (i % 2 == 0) {
temp = {};
temp[obj[i]] = obj[i + 1];
result.push(temp);
}
}
console.log(result);
工作jsfiddle。
試試看,它會解決你的問題。