如何删除数组中的内容?

时间:2010-01-28 08:04:52

标签: javascript arrays

我的问题是我必须从数组中删除一些东西。我发现了如何删除列表框中的内容。但问题是列表框是由数组填充的。因此,如果我不删除数组中的值(我从列表框中删除)。添加新项目时,该值会不断返回。顺便说一句:我是php和javascript的新手。

我的代码是:

function removeItem(veldnaam){
var geselecteerd = document.getElementById("lst"+veldnaam).selectedIndex;
var nieuweArray;
alert(geselecteerd);    
alert(document.getElementById(veldnaam+'hidden').value);

For (var i = 0, i<= arr.lenght, i++) {
If (i= geselecteerd){
    nieuweArray = arr.splice(i,1);
    document.getElementById(veldnaam+'hidden').value = arr;
                }}

document.getElementById("lst"+veldnaam).remove(geselecteerd);
    }

4 个答案:

答案 0 :(得分:3)

使用删除操作符。我假设您正在使用对象作为关联数组。

var arr = {
  "hello": "world",
  "foo": "bar"
}
delete arr["foo"]; // Removes item with key "foo"

答案 1 :(得分:3)

您可以使用 delete 命令删除数组中的元素。但它只会将值设置为 undefined

var arr = ['h', 'e', 'l', 'l', 'o'];
delete arr[2];

arr => ['h', 'e', undefined, 'l', 'o'];

因此它不会删除该项,并且创建一个较短的数组,该数组仍将有5个元素(0到4),但该值已被删除。

对于“关联”数组或对象:属性将被删除,它将不再存在。

var obj = { 'first':'h', 'second':'e', 'third':'l'};
delete obj['first'];

obj  => { 'second':'e', 'third':'l'};

答案 2 :(得分:3)

在某处添加以下代码


// Array Remove - By John Resig (MIT Licensed)
Array.prototype.remove = function(from, to) {
  var rest = this.slice((to || from) + 1 || this.length);
  this.length = from < 0 ? this.length + from : from;
  return this.push.apply(this, rest);
};

并将其称为:


// Remove the second item from the array
array.remove(1);
// Remove the second-to-last item from the array
array.remove(-2);
// Remove the second and third items from the array
array.remove(1,2);
// Remove the last and second-to-last items from the array
array.remove(-2,-1);

包含上述代码和解释的文章:http://ejohn.org/blog/javascript-array-remove/

答案 3 :(得分:0)

var geselecteerd = document.getElementById("lst"+veldnaam).selectedIndex;
var nieuweArray;
var teller = 0;
var oudeArray=document.getElementById(veldnaam+'hidden').value;
var tmpArr="";


nieuweArray=oudeArray.split(":");

for (i = 0; i<nieuweArray.length; i++){
if (!(i==geselecteerd)){
tmpArr = tmpArr+nieuweArray[i]+":";}
teller++;
}
tmpArr = tmpArr + ":";
tmpArr = tmpArr.replace("::","");
document.getElementById(veldnaam+'hidden').value = tmpArr;          
document.getElementById("lst"+veldnaam).remove(geselecteerd);
}

这是我的解决方案而且有效。谢谢你的帮助。