Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我没有被推到数组中,而是得到了一个错误_Javascript - Fatal编程技术网

Javascript 我没有被推到数组中,而是得到了一个错误

Javascript 我没有被推到数组中,而是得到了一个错误,javascript,Javascript,我正在开发这个预算应用程序。现在的想法是在标记中选择收入或支出类型,添加所述类型的描述,然后输入值。费用,买车,2500,它应该推送到数据对象中的一个数组,而我一直在第30行得到一个错误。错误已在第行注释 // BUDGET CONTROLLER var budgetController = (function() { var Expense = function(id, description, value) { this.id = id; this.description =

我正在开发这个预算应用程序。现在的想法是在标记中选择收入或支出类型,添加所述类型的描述,然后输入值。费用,买车,2500,它应该推送到数据对象中的一个数组,而我一直在第30行得到一个错误。错误已在第行注释

// BUDGET CONTROLLER
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:{
        exp: [],
        inc:[]
    },
    totals: {
        exp: 0,
        inc: 0
    }
};
return {
    addItem: function(type, des, val) {
        var newItem, ID;
        //[1 2 3 4 5], next ID = 6
        //[1 2 4 6 8], next ID = 9
        // ID = last ID + 1
        // Create new ID
        if (data.allItems[type].length > 0){ //ERROR THROWN HERE
            ID = data.allItems[type][data.allItems[type].length - 1].id + 1;
        } else {
            ID = 0;
        };
        // Create new item based on 'inc' or 'exp' type
        if(type === 'exp') {
            newItem = new Expense(ID, des, val);
        } else if (type === 'inc') {
            newItem = new Income(ID, des, val);
        };
        // Push it into our data structure
        data.allItems[type].push(newItem);
        // Return the new element
        return newItem;
},
testing: function() {
    console.log(data);
    }
};
})();
输入值。费用,买车,2500,它应该推到数据对象中的一个数组中,而不是我一直在第30行得到和错误

原因是您将费用作为第一个参数传递给addItem函数,该函数用于访问data.allItems

然而,data.allItems中根本不存在开销,如果我没有弄错的话,它将抛出一个关于尝试访问的错误。未定义的长度

因此,要么将data.allItems中的exp键更改为expenses,要么将exp传递给addItem函数

就代码可读性而言,在这种情况下,花钱更合适