代码:
var items = {}; //object to store everything
var ilist = [
//a couple items to pull data from
];
ilist.forEach(function(ilist, index){
var item = {
quantity: //getQuantity().text(),
type: //getType().text()
}
items["item"+index] = item;
});
console.dir(items);
此控制台输出显示:
Object
item0: Object
quantity: "xx"
type: "xx"
item1: Object
quantity: "xx"
type: "xx"
因此它看起来像对象中的对象,并且所有内容都已正确存储。然后我尝试用console.log(items [0]),console.log(items.item0)来解决问题,我在控制台中得到了未定义的东西。 console.log(items.item0.quantity)返回:未捕获的TypeError:无法读取未定义的属性“数量”。为什么我无法从物体中拉出任何东西?我希望把它变成一个JSON对象,但是JSON.stringify(items);也没用。
答案 0 :(得分:0)
首先,您应该使用reduce而不是forEach
var list = [
{id: 0, name: 'item0', qty: 1, type: 'type1'},
{id: 1, name: 'item1', qty: 2, type: 'type1'},
{id: 2, name: 'item2', qty: 1, type: 'type1'},
{id: 3, name: 'item3', qty: 3, type: 'type1'}
];
var items = list.reduce(function(previous, item, index){
var newItem = {
quantity: item.qty,
type: item.type
};
previous["item" + index] = newItem;
return previous;
}, {});
console.log(items['item0']);

我不知道你是如何创建你的项目的,所以我创建了自己的项目,但它只是一个例子......但是,这应该有效......
答案 1 :(得分:0)
您正在使用forEach略有错误...回调的参数是 元素值 元素索引 正在遍历的数组
所以你的forEach正在重新定义' ilist'变量与当前元素值。
尝试使用
ilist.forEach(function(element, index){...} {
var item = {
quantity: element.quantity
...
这样做,我没有使用console.log(items.item0);