繁体   English   中英

使用Javascript可以实现可变长度数组

[英]Are variable length arrays possible with Javascript

我想在Javascript中创建一个可变长度数组。

这可能吗。 快速谷歌搜索“Javascript变长数组”似乎没有产生任何东西,如果有可能这样做,这将是令人惊讶的。

我应该改为使用一个字符串来代替分隔符,或者是否有更好的方法来获得一个类似于长度数组的变量变量。

Javascript数组不是固定长度的; 你可以在任何索引上做任何你想做的事情。

特别是,您可能正在寻找push方法:

var arr = [];
arr.push(2);            //Add an element
arr.push("abc");        //Not necessarily a good idea.
arr[0] = 3;             //Change an existing element
arr[2] = 100;           //Add an element
arr.pop();              //Returns 100, and removes it from the array

有关更多信息,请参阅文档

是的,使用Javascript的Array原型可以实现可变长度数组。 正如SLaks所指出的,你可以使用.push().pop()来分别从数组的末尾添加和删除项目,并且数组的length属性每次都会增加和减少1。

您还可以在数组中设置特定索引的值,如下所示:

const arr = [];
arr[100] = 'test';
console.log(arr[100]); // 'test'
console.log(arr.length); // 101
console.log(arr[99]); // undefined

除索引100之外的每个其他数组索引都将是undefined

您还可以通过简单地设置数组的长度属性来调整数组的长度,如下所示:

const arr = [];
arr[100] = 'test';
arr.length = 1000;
console.log(arr[100]); // 'test'
console.log(arr.length); // 1000

要么...

const arr = [];
arr[100] = 'test';
console.log(arr.length); // 101
arr.length -= 10;
console.log(arr.length); // 91
console.log(arr[100]); // undefined

数组长度属性的最大值为4,294,967,295。 有趣的是,您可以在大于4,294,967,295的索引处设置数组的值:

const arr1 = [];
const arr2 = [];
arr1[4294967294] = 'wow';
arr2[4294967295] = 'ok?';
console.log(arr1[4294967294]); // 'wow'
console.log(arr1.length); // 4294967295
console.log(arr2[4294967295]); // 'ok?'
console.log(arr2.length); // 0

如果您尝试将长度设置为大于4,294,967,295的数字,则会抛出RangeError:

const arr = [];
arr.length = 4294967296;
console.log(arr.length); // RangeError: Invalid array length

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM