如何在javascript中取消设置数组中的元素

How do I unset an element in an array in javascript?

本文关键字:数组 元素 设置 取消 javascript      更新时间:2023-09-26

如何从数组foo中删除键"bar",使"bar"不会显示在中

for(key in foo){alert(key);}

不要使用delete,因为它不会从数组中删除元素,它只会将其设置为未定义,这样就不会正确反映在数组的长度中。

如果您知道密钥,则应使用拼接,即

myArray.splice(key, 1);

对于像史蒂文这样的人,你可以尝试这样的东西:

for (var key in myArray) {
    if (key == 'bar') {
        myArray.splice(key, 1);
    }
}

for (var key in myArray) {
    if (myArray[key] == 'bar') {
        myArray.splice(key, 1);
    }
}
delete foo[key];

:D

如果你知道密钥名称,只需这样做:

delete array['key_name']

一个重要的注意事项:JavaScript数组不像PHP中的那些数组那样是关联数组。如果您的"数组键"是一个字符串,则不再对数组的内容进行操作。您的数组是一个对象,并且您正在使用括号表示法来访问名为<密钥名称>。因此:

var myArray=[];myArray["bar"]=true;myArray["foo"]=true;alert(myArray.length);//返回0。

因为您没有向数组中添加元素,所以只修改了myArray的bar和foo成员。

就是这样做的

 myArray.splice( myArray.indexOf('bar') , 1) 

http://www.internetdoc.info/javascript-function/remove-key-from-array.htm

removeKey(arrayName,key);
function removeKey(arrayName,key)
{
 var x;
 var tmpArray = new Array();
 for(x in arrayName)
 {
  if(x!=key) { tmpArray[x] = arrayName[x]; }
 }
 return tmpArray;
}

删除和拼接之间有一个重要区别:

原始数组:

[<1个空项目>,"一个",<3个空项目>,'five',<3个空项>;,'nine']

拼接后(array.SPLICE(1,1)):

[<4个空项目>,'5',<3个空项目>,'9e']

AFTER DELETE(删除数组[1]):

[<5个空项目>,'5',<3个空项目>,'9e']

数组元素未设置

  • 使用pop
var ar = [1, 2, 3, 4, 5, 6];
ar.pop(); // returns 6
console.log( ar ); // [1, 2, 3, 4, 5]
  • 使用移位
var ar = ['zero', 'one', 'two', 'three'];
ar.shift(); // returns "zero"
console.log( ar ); // ["one", "two", "three"]
  • 使用拼接
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
var removed = arr.splice(2,2);
var list = ["bar", "baz", "foo", "qux"];
    
list.splice(0, 2); 
// Starting at index position 0, remove two elements ["bar", "baz"] and retains ["foo", "qux"].
  • 了解更多