在一行中创建稀疏数组

3 javascript arrays sparse-array

Bash可以在一行中创建一个稀疏数组

names=([0]="Bob" [1]="Peter" [20]="$USER" [21]="Big Bad John")
Run Code Online (Sandbox Code Playgroud)

§创建数组

JavaScript可以创建像这样的稀疏数组吗?

Jas*_*n S 5

从技术上讲,JavaScript具有稀疏的数组文字,但它很麻烦。

var x = [8,,,,4,,,,6]
Run Code Online (Sandbox Code Playgroud)

我不希望您使用它,因为您不想计算[1]和[20]之间的逗号。在这种情况下,使用对象而不是数组似乎更适合JavaScript。

var names = {0: "Bob", 1: "Peter", 20: "$USER", 21: "Big Bad John"};
Run Code Online (Sandbox Code Playgroud)

无论是否引用整数,您都将得到相同的结果-它们将被转换为字符串以用作对象中的键(基本上是哈希)。(哦,我在这里对您的shell变量不做任何事情。)使用进行访问也是如此[]。如果您查找,names[0]实际上与names['0']本例相同。

但是,如果您想要一个实际的数组,可能的sparse-array-creation函数是:

function sparseArray() {
    var array = [];
    for (var i = 0; i < arguments.length; i += 2) {
        var index = arguments[i];
        var value = arguments[i + 1];
        array[index] = value;
    }
    return array;
}
var names = sparseArray(0, "Bob", 1, "Peter", 20, "$USER", 21, "Big Bad John");
Run Code Online (Sandbox Code Playgroud)

没有错误检查,因此省去最后一个参数将设置21-> undefined并提供非整数键会将其添加为对象属性...