我试图解决一些Javascript问题时,这个让我措手不及。看看下面的代码片段,
var person = [];
person['1'] = "John";
person['2'] = "Doe";
person['3'] = 46;
//[1: "John", 2: "Doe", 3: 46]
console.log(person);
//4 <-- as i expected
console.log(person.length);
var person2 = [];
person2['a'] = "John";
person2['b'] = "Doe";
person2['c'] = 46;
//[1: "John", 2: "Doe", 3: 46]
console.log(person2);
//0 <-- i expected 4, but got 0
console.log(person2.length)
我在评论中添加了输出。
我想找出原因
console.log(person2.length)
给出长度0而不是4.有人可以帮我理解这个吗?
答案 0 :(得分:2)
javascript Arrays 没有key:value
但只是值,您的代码可能应该如下:
var person = [];
person[0] = "John";
person[1] = "Doe";
person[2] = 46;
console.log(person);
console.log(person.length);
&#13;
或者也使用push
:
var person = [];
person.push("John");
person.push("Doe");
person.push(46);
console.log(person);
console.log(person.length);
&#13;
如果您希望key/value
存储数据,可以使用object
:
var person = {};
person['1'] = "John";
person['2'] = "Doe";
person['3'] = 46;
console.log(person);
console.log(Object.keys(person).length);
&#13;
希望这有帮助。
答案 1 :(得分:1)
您面临的问题是:
在JavaScript中,数组由索引(例如0,1,2,3 ...)访问。您正在做的是将密钥和值分配给public class Fish extends Pet {
}
。而不是这个,只需使用
public class Pet {
}
&#13;
public class Fish {
Pet myPet = new Pet ();
}
&#13;
person2
来访问长度。
答案 2 :(得分:0)
Javascript只知道基于索引的数组,从0开始。您可以访问arr[n]
等数组元素,其中n
是整数 { {1}}和n >=0
。您已尝试使用字符串而不是整数。
此外,由于数组是Javascript中的对象,因此您还可以使用n < arr.length
向该对象添加属性。由于数组也是Javascript中的对象,因此会在person对象上创建名为person['1'] = "John";
的属性。
在对象上,您可以通过两种方式访问(或创建)属性:
1
答案 3 :(得分:0)
Javascript中的数组是对象 - 因此,当你这样做时:
person2['a'] = "John";
person2['b'] = "Doe";
person2['c'] = 46;
您正在设置person2
对象的属性。如果您想要一种更清晰的方式将项添加到数组中,我建议您查看array.push
。
答案 4 :(得分:0)
对于第一个,你将获得4,因为它是基于索引的数组。
所以JavaScript会将4指针放在堆栈上的位置
,第二个是关联数组。所以根本没有索引。我们只能基于密钥或使用for-each访问它。
在第2位,你将获得下面的长度3。
double randomDouble = rng.nextDouble() * range;