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

我如何从一个数组 foo 中删除键“ bar”,这样“ bar”就不会出现在数组 foo 中

for(key in foo){alert(key);}
225580 次浏览
delete foo[key];

校对: D

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

如果你知道密钥,你应该使用 拼接

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);
}
}

一个重要的注意事项: JavaScript 数组不像 PHP 中那样是关联数组。如果您的“数组键”是一个字符串,则不再对数组的内容进行操作。数组是一个对象,使用括号表示法访问名为 < key name > 的成员。因此:

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

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

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;
}

如果您知道密钥名称,只需像下面这样做:

delete array['key_name']

我就是这么做的

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

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

原始阵列:

[ < 1空项 > ,‘1’,< 3空项 > ,‘5’,< 3空项 > ,‘9’]

AFTER SPLICE (array.SPLICE (1,1)) :

[ < 4个空项目 > ,‘五’,< 3个空项目 > ,‘九’]

删除后(DELETE array [1]) :

[ < 5个空项目 > ,‘5’,< 3个空项目 > ,‘9’]

数组元素未设置

  • 用汽水
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"].