所以我有一个包含很多重复值的数组。myArr = ['yeh','yeh','yeh','hey']
. 我有一个 HTML 表单,允许用户输入一个单词,如果该单词在数组中,它将删除所有重复值并打印出没有这些值的新 myArr。但是,我的循环在几个循环后继续停止,而没有完成删除其余重复项。就像我['yeh','yeh','yeh']
在表格中输入“yeh”一样,它只会删除两个“yeh”。
HTML
<form id="remove_user" action="#" method="post">
<label for="user_num">Remove user:</label>
<input type="text" id="user_num" name="user_num" placeholder="number">
<input type="submit" value="(-) remove">
</form><!-- #remove_user -->
<ul id="user_list"></ul><!-- #user_list -->
JS:
$('#remove_user').submit(function(){
id = $('#user_num').val();
$.each(myArr, function(i, value){
if (value == id){
myArr.splice(i, 1);
console.log(myArr);
}
});
console.log(myArr);
$('#user_list').html('');
for (var i=0; i < myArr.length; i += 1) {
console.log(myArr[i]);
$('#user_list').append('<li>' +myArr[i]+ '</li>');
};
return false;
});
更新的答案(如下所述,我在对其进行循环时对其进行了修改,所以事情被跳过了。我使用 grep 创建了一个新数组,其中包含与提交的值不匹配的所有值,然后只是一个一个地检查 diffValues 元素并打印出来):
$('#remove_user').submit(function(){
id = $('#user_num').val();
var diffValues = $.grep(myArr, function(value, i){
return value != id;
});
console.log(diffValues);
$('#user_list').html('');
for (var i=0; i < diffValues.length; i += 1) {
console.log(diffValues[i]);
$('#user_list').append('<li>' +diffValues[i]+ '</li>');
};
return false;
});