Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在一行中创建稀疏数组_Javascript_Arrays_Sparse Array - Fatal编程技术网

Javascript 在一行中创建稀疏数组

Javascript 在一行中创建稀疏数组,javascript,arrays,sparse-array,Javascript,Arrays,Sparse Array,Bash可以在一行中创建稀疏数组 names=([0]=“Bob”[1]=“Peter”[20]=“$USER”[21]=“大坏蛋约翰”) JavaScript可以创建这样的稀疏数组吗?从技术上讲,JavaScript有一个稀疏数组文本,但它很麻烦 var x = [8,,,,4,,,,6] 我认为您不想使用它,因为您不想计算[1]和[20]之间的逗号。在这种情况下,使用对象而不是数组对于JavaScript来说似乎更自然 var names = {0: "Bob", 1: "Peter"

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

names=([0]=“Bob”[1]=“Peter”[20]=“$USER”[21]=“大坏蛋约翰”)


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

从技术上讲,JavaScript有一个稀疏数组文本,但它很麻烦

var x = [8,,,,4,,,,6]
我认为您不想使用它,因为您不想计算[1]和[20]之间的逗号。在这种情况下,使用对象而不是数组对于JavaScript来说似乎更自然

var names = {0: "Bob", 1: "Peter", 20: "$USER", 21: "Big Bad John"};
无论是否引用整数,都会得到相同的结果——它们被转换为字符串,用作对象中的键(基本上是散列)。(哦,我没有对您的shell变量做任何操作。)使用
[]
进行访问也是如此。如果您查找
names[0]
,它实际上与本例中的
names['0']
相同

var names = {0: "Bob", 1: "Peter", 20: "$USER", 21: "Big Bad John"};
但是,如果需要实际阵列,则可能的稀疏阵列创建函数为:

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");
函数sparseArray(){
var数组=[];
对于(变量i=0;i

没有错误检查,因此不使用最后一个参数将设置21->
未定义
,而使用非整数键将其添加为对象属性…

不,我认为它不能;但我希望被证明是错的(如果只是为了学术兴趣)。我假设创建一个可以调用的函数(或者扩展一个原型)不符合您的要求?如果您将它包装在IIFE
names=(函数(a){a[2]='Bob';a[22]='Fred';return a;})([])->那么不,在javascript声明中没有本机方法可以做到这一点,就像在您的示例中一样,代码必须用分号分隔,因为在JS中空格实际上算不上闭合。@adeneo我想您误解了这个问题。我在问JavaScript是否与上面的Bash示例类似,而不是一个字符对字符相同的命令。