使用用户输入从数组中删除元素

时间:2015-10-27 00:21:48

标签: javascript

我在从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");
    }
}

3 个答案:

答案 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);