Javascript 我有一个数组,它应该是一个对象

Javascript 我有一个数组,它应该是一个对象,javascript,arrays,object,Javascript,Arrays,Object,数据对象中有一个对象,我将其作为对象写入,但如果我使用console.log,浏览器会说它是一个数组。但我显然给了它对象括号。我正在观看的教程也像一个数组一样处理这个问题。代码运行良好,但没有答案我无法入睡 var budgetController = (function() { var Expense = function(id, description, value) { this.id = id; this.description = descript

数据对象中有一个对象,我将其作为对象写入,但如果我使用console.log,浏览器会说它是一个数组。但我显然给了它对象括号。我正在观看的教程也像一个数组一样处理这个问题。代码运行良好,但没有答案我无法入睡

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 === []