奇怪的未定义的jquery错误

时间:2014-05-29 18:05:22

标签: javascript jquery arrays

我试图通过jquery数组进行迭代,我遇到了错误 导致错误的脚本是:

$.each(amount, function (key, value) {
    console.info('>>> Selected line: '+value.value + " " + value.currency);
    if ((value.currency == currency) && (value.value == val)) {
        amount.splice(key,1);
        console.info('Deleted: [' + value.value + " " + value.currency+ "] from line "+ key);
    }
});

firebug抛出的错误是:

TypeError: value is undefined

有人能指出错误在哪里或如何解决错误吗?

1 个答案:

答案 0 :(得分:1)

问题在于您的.splice()。当您移除项目0时,所有内容都向上移动,因此您不再拥有项目1。

一般来说,您无法从您列举的列表中删除项目(除非在添加或删除项目时采取措施调整当前索引,但是.. yuck)。

我建议使用像grep这样的过滤器功能:

http://jsfiddle.net/DnN4a/

var newArr = $.grep(amount, function(item, idx) {
   return item.currency == currency || item.value == val; 
}, true);