gpt4 book ai didi

Javascript 类型错误 : Cannot read property 'indexOf' of undefined

转载 作者:数据小太阳 更新时间:2023-10-29 05:43:59 25 4
gpt4 key购买 nike

在这段代码中,我想从 cart_products 数组中删除一个元素。

var cart_products = ["17^1", "19^1", "18^1"];
var product = 17;

$.each(cart_products,function(key, item) {
if(item.indexOf(product+"^") !== -1){
cart_products.splice(key, 1);
}
});

但我在 Google Chrome 控制台中收到此错误:

Uncaught TypeError: Cannot read property 'indexOf' of undefined

代码有问题吗?

感谢您的帮助。

最佳答案

问题是您正在修改数组,而 jQuery 的 $.each 正在遍历它,所以当它到达末尾时,条目曾经在索引 2 处不再存在。 (我承认我对 $.each 的行为感到有点惊讶,但我至少有五年没有使用过 $.each 了,所以。 ..)

如果目标是从数组中删除匹配项,更好的选择是 filter :

var cart_products = ["17^1", "19^1", "18^1"];
var product = 17;

cart_products = cart_products.filter(function(item) {
return item.indexOf(product+"^") === -1;
});
console.log(cart_products);

...或者如果重要的是就地修改数组而不是创建一个新数组,则使用无聊的 for 循环 as Andreas points out在数组中向后循环,这样当你删除东西时就没关系了:

var cart_products = ["17^1", "19^1", "18^1"];
var product = 17;

var target = product + "^";
for (var index = cart_products.length - 1; index >= 0; --index) {
if (cart_products[index].indexOf(target) !== -1) {
cart_products.splice(index, 1);
}
}
console.log(cart_products);

关于Javascript 类型错误 : Cannot read property 'indexOf' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41895890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com