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