Javascript 我有一个数组,它应该是一个对象
数据对象中有一个对象,我将其作为对象写入,但如果我使用console.log,浏览器会说它是一个数组。但我显然给了它对象括号。我正在观看的教程也像一个数组一样处理这个问题。代码运行良好,但没有答案我无法入睡Javascript 我有一个数组,它应该是一个对象,javascript,arrays,object,Javascript,Arrays,Object,数据对象中有一个对象,我将其作为对象写入,但如果我使用console.log,浏览器会说它是一个数组。但我显然给了它对象括号。我正在观看的教程也像一个数组一样处理这个问题。代码运行良好,但没有答案我无法入睡 var budgetController = (function() { var Expense = function(id, description, value) { this.id = id; this.description = descript
var budgetController = (function() {
var Expense = function(id, description, value) {
this.id = id;
this.description = description;
this.value = value;
};
var Income = function(id, description, value) {
this.id = id;
this.description = description;
this.value = value;
};
var data = {
allItems: { //Here is the object
exp: [],
inc: [],
},
totals: {
exp: 0,
inc: 0,
},
};
return {
addItem: function(type, des, val){
var newItem, ID;
//ID = last ID + 1
ID = data.allItems[type][data.allItems[type].length - 1].id + 1;
if (type === 'exp') {
newItem = new Expense(ID, des, val);
} else if (type === 'inc') {
newItem = new Income(ID, des, val);
}
console.log(data.allItems[type]);
data.allItems[type].push(newItem);
return newItem;
},
};
})();
budgetController.addItem('inc', 'test', 22);
非常感谢你的帮助 你比你想象的要深一层。打印数组的代码是console.logdata.allItems[type]。对于每个函数调用,键入=='inc' 最后,您实际打印的拼图部分:
data.allItems['inc'] === data.allItems.inc === []
console.logdata.allItems;而不是console.logdata.allItems[type]+为了@RomanKushin所说的话。您是console.log-ing数组是allItems的子项,而不是console.log-ing对象allItems。谢谢,我尝试过了,这就是误会。
data.allItems['inc'] === data.allItems.inc === []