从js数组中删除值而无需重新排序键

Nuo*_*oun 4 javascript

我有一个数组,我只想删除一个元素,但没有重新排序键.有没有使用删除或重建整个阵列的简单方法?

或者在删除后清理以清除未定义的值,再次修复长度.

var array = ["valueone", "valuetwo"];

console.dir(array); // keys 0 and 1
array.splice(0, 1);
console.dir(array); // key 1 is now 0, do not want!
Run Code Online (Sandbox Code Playgroud)

Aln*_*tak 6

你可以delete使用数组的元素:

a = ['one', 'two'];
delete a[0];

// a is now [undefined, 'two'];
Run Code Online (Sandbox Code Playgroud)

或者,a[0]明确设置为undefined.

请注意,数组.length参数由系统自动维护.如果你故意将它设置为更高的数字,你只需要undefined为缺少的键获得一大堆值:

a.length = 10;
// a is now [undefined, 'two', undefined x 8]
Run Code Online (Sandbox Code Playgroud)

如果您不接受这些语义,那么您应该考虑使用Object替代语法.这将保留您的密钥,也许更有效,但您失去了.length财产.