【发布时间】:2017-06-28 04:25:00
【问题描述】:
我正在循环将数组数组转换为对象,但最终对象只有对象中的最后一项。我很困惑,因为你不能推入像数组这样的对象,而且循环的数量让我很沮丧。需要帮助
这里是 JSbin:http://jsbin.com/torawovicu/edit?js,console
还有如何让对象与数组的顺序相同?
结果应该是这样的:
var newResult =
[
{itemcode: 1, item: 'Pen', 'cashier' : 'Sam'},
{itemcode: 2, item: 'Eraser', 'cashier' : 'Kim'}
]
这是我的代码
var list = [
[
['itemCode', 1],
['item', 'Pen'],
['cashier', 'Sam']
],
[
['itemCode', 2],
['item', 'Eraser'],
['cashier', 'Kim']
]
]
//console.log(people.length);
function result(array) {
var newObj = {};
var newArr = [];
for (var x in array) {
//console.log(array[x])
var item = array[x];
for (var y in item) {
var itemSingle = item[y]
//console.log(itemSingle);
for (i = 0; i < itemSingle.length; i = i + 2) {
newObj[itemSingle[i]] = itemSingle[i + 1];
}
}
}
return newObj;
}
console.log(result(list));
【问题讨论】:
-
ES6 特性派上用场:
list.map(a => a.reduce((o, [k, v]) => (o[k]=v, o), {}))这使用箭头函数和对参数的解构赋值。
标签: javascript arrays object for-loop