从数组中删除对象?

时间:2014-01-03 09:25:39

标签: javascript arrays

我有这个应用程序,让用户可以选择他的颜色首选项,并在他决定这样做时更改它们。该应用程序不需要在页面重新加载之间工作。我希望用户能够从下拉列表中删除特定的颜色首选项。我想使用indexOf和splice,但我一直在努力使用它。这是我现在所做的。麻烦在于Remove()。 JS Bin:http://jsbin.com/ANENaRid/2/

这是故障功能:

function Remove() {
    var select = document.getElementById("selectColor");
    for (var i = 0; i < colors.length; i--) {
        var selectIndex = colors.indexOf(select.value);
        if (selectIndex !== -1) {
            colors.splice(i, 1);
        }
        return false;
    }
}

6 个答案:

答案 0 :(得分:2)

remove函数应如下所示,您必须从select中删除该选项(只有构造函数名称应为大写):

function remove() {
    var select = document.getElementById("selectColor");
    for (var i = 0; i < colors.length; i++) {
        if (colors[i].name_prop == select.value) {
            colors.splice(i, 1);
        }
     }
}

答案 1 :(得分:2)

function Remove() {
    var select = document.getElementById("selectColor");
    var selectIndex = colors.indexOf(select.value);
    if (selectIndex !== -1) {
        colors.splice(selectIndex , 1);
    }
    return false;
}

您应该只选择要删除的颜色,而不是遍历颜色数组。您获得该项目的索引并将其删除。无需迭代它。

答案 2 :(得分:0)

使用

for(var i = 0; i < colors.length; i++) { 
    //your code here
}

for(var i = colors.length-1; i >= 0; i--) { 
    //your code here
}
循环

并将return语句带到if

答案 3 :(得分:0)

您可以改为调用表单重置功能。<​​/ p>

删除示例元素的style属性!

答案 4 :(得分:0)

这可能会有所帮助:

for (var i = 0; i < colors.length; i++) {
    var index = colors[i].name_prop.indexOf(select.value);
    if (index !== -1) {
        colors.splice(i, 1);
        return false;
    }
}

indexOf可能没用,也不可靠。我太懒了,无法进一步调查,请看另一种方式的答案:https://stackoverflow.com/a/20900571/1636522

答案 5 :(得分:0)

我已经重构你删除功能;

function Remove () {
    var selectedIndex = document.getElementById("selectColor").selectedIndex;
  var options=document.getElementById("selectColor").options;
    for(var i = 0; i < options.length; i++) {
            if(options[selectedIndex].text === colors[i].name_prop){
              alert(colors[i].name_prop + "removed");
            colors.splice(i, 1);
               return false;
        }

     }
}

从颜色数组

中删除所选项目