我在slice()
数组中使用$.each()
函数。当数组值的前一半具有相同的字符串时,它将显示此错误。 $name
来自始终具有不同值(即question1
,question2
)的按钮。
我试过当数组像var arr = ["question1Answer1", "question2Answer2"];
时函数正常工作,但是当我推入以question2
开头的更多值并且想要删除这些值而不是控制台中显示的上述错误时。
var arr = ["question1Answer1", "question2Answer2", "question2Answer3"];
refreshArrange = function($name) {
$.each(arr, function(index, value) {
var newStr = '';
newStr = value.slice(0, 9);
if(newStr == $name) {
var ind = arr.indexOf(value);
if (ind > -1) {
arr.splice(ind, 1);
console.log('working Ok');
}
}else {
}
});
console.log(arr);
}
我想删除数组的第二和第三值,因为$name
的即将到来的值是question2
。我正在拆分数组值,并将上半部分与$name
进行比较并将其删除。但是会发生此错误。
我不知道问题出在哪里。
实际上,我要删除从$name
的值开始的数组的值
对不起,这是一个愚蠢的问题。我知道我没有正确解释问题。
答案 0 :(得分:0)
因为您在each
阵列使用arr.splice(ind, 1);
时拼接了一个阵列
您可以尝试我的代码:
var arr = ["question1Answer1", "question2Answer2", "question2Answer3"];
var refreshArrange = function($name) {
var result = [];
$.each(arr, function(index, value) {
// var newStr2 = '';
var newStr = value.slice(0, 9);
// newStr2 = value.slice(0, 10);
if(newStr == $name) {
}else {
result.push(value)
}
});
console.log(result);
}
refreshArrange('question2');
然后result
变量就是您期望的结果