javascript - 我有一个应该是对象的数组

标签 javascript arrays object

数据对象中有一个对象,我将其写为对象,但是如果我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); 

Here is the console.log with the array 非常感谢您的帮助!

最佳答案

您对物体的了解比您想象的要深 1 级。打印数组的相关代码是console.log(data.allItems[type])。根据您的函数调用,type === 'inc'

data === {
    allItems: {   
        exp: [],
        inc: [],
    },
    totals: {
        exp: 0,
        inc: 0,
    },
};

data.allItems === {   
    exp: [],
    inc: [],
},

最后,您实际打印的拼图:

data.allItems['inc'] === data.allItems.inc === []

关于javascript - 我有一个应该是对象的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59202393/

相关文章:

android - 在 Rails 中处理来自 Android 的 JSON 数组

javascript - 如何从javascript中的对象值返回键?

javascript - 编写 Atom 编辑器插件,动画语法着色

c - C 中 uint32 的一维数组

javascript - polymer 改变墨水波纹颜色

PHP - 链接键/值对数组作为键=>值?

c++ - Arduino - 只有第一个对象在包含在另一个对象的集合/数组中时丢失其数据属性值

javascript - 访问对象中的元素

javascript - 顺序运行Js代码

javascript - 在 node.js 中获取 *current* 堆栈跟踪(例如,通过 SIGINT)