我在从Javascript数组中删除项目时遇到问题。我正在使用提示,当用户输入工作人员的ID号时,我希望从数组中删除该元素。
目前,我的代码只会删除列表中的最后一个元素。
这是我的代码:
var remove = function(){
var removeID = prompt("Enter ID of the worker you wish to remove: ");
var index = array.indexOf(removeID);
if(removeID == id){
array.splice(index, 1);
showArray();
}
else{
alert("id is not in the system");
}
}
答案 0 :(得分:0)
我认为你搞砸了你的逻辑
if(removeID == id){
应该在删除之前检查数组中是否存在id。
if(index !== -1){
另一个猜测,因为你没有给出一个可运行的例子:
var removeID = Number(prompt("Enter ID of the worker you wish to remove: "));
答案 1 :(得分:0)
您将数组索引与元素混合在一起。它应该是这样的:
var remove = function(){
var removeID = prompt("Enter ID of the worker you wish to remove: ");
var index = array.indexOf(removeID);
if(index > -1){ // HERE!!!
array.splice(index, 1);
showArray();
}
else{
alert("id is not in the system");
}
}
另外两个观察结果:
如果ID是数字,那么对array.indexOf()的调用将始终返回-1。 prompt()总是会给你一个字符串,而不是一个整数;你应该像这样使用parseInt():
var removeID = parseInt(prompt("Enter ID of the worker you wish to remove: "));
由于ID应该是唯一的,并且根据上下文,将它们存储在对象而不是数组中可能是有意义的,这样您就不会有重复ID的风险。
答案 2 :(得分:0)
http://jsfiddle.net/dk4kb417/1/
此方法应删除所需的索引。它会要求元素值。该值的第一个索引将被删除:
var array = ['one','two','three',4,5,6,7,8,9,10];
var remove = function(removeID){
var index = array.indexOf(removeID);
if (index>-1) {
array.splice(index, 1);
}
}
remove(prompt("Enter ID of the worker you wish to remove: "));
console.log(array);