JavaScript undefined不是一个函数(使用splice函数)

JavaScript undefined is not a function (using the splice function)

本文关键字:函数 一个 使用 splice undefined JavaScript      更新时间:2023-09-26

我正在尝试将"lene"(它只是一个测试样本)推入变量"q"。出于某种原因,这是我的浏览器提到的:

Javascript highscore.html:24 Uncaught TypeError: undefined is not a function
Javascript highscore.html:145 Uncaught TypeError: Cannot read property 'length' of undefined

第 145 行上的第二个错误是由于第一个错误。我在这里的评论中标记了第 24 行:

var q = [{
    TernRank: 2,
    TernVan: '03/12/2014',
    TernTot: '01/01/2015',
    TernDagen: 1
}, {
    TernRank: 3,
    TernVan: '08/01/2014',
    TernTot: '01/01/2015',
    TernDagen: 1
}, {
    TernRank: 1,
    TernVan: '03/12/2014',
    TernTot: '01/01/2015',
    TernDagen: 1
}, {
    TernRank: 4,
    TernVan: '03/12/2014',
    TernTot: '01/01/2015',
    TernDagen: 1
}];


DAY = 1000 * 60 * 60 * 24
for (i = 0; i < 4; i++) {
    d1i = new Date(q[i].TernVan)
    d2i = new Date(q[i].TernTot)
    days_passedi = Math.round((d2i.getTime() - d1i.getTime()) / DAY)
    q[i].splice(3, 0, "Lene"); //This is line 24
};

如果我删除"[i]",第 24 行确实有效。有谁知道为什么它会导致错误或/以及如何解决它?

q是一个

数组,q[i]是一个对象。

默认情况下,只有数组具有.splice的方法:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice

如果您希望将"Lene"添加到q数组中,最简单的方法是:

q.push('Lene');

或者,如果您确实想使拼接工作,则可能需要这样做:

q.splice(i, 0, 'Lene');

这将在q数组的索引i处添加元素"Lene"。 或者你可能想做这样的事情:

q.splice(q.length + 1, 0, 'Lene');

这基本上与q.push相同