Javascript 当我们使用字符值而不是数字定义一组数组属性时,为什么数组的长度显示为零?
我在练习JavaScript数组时遇到了这种情况。当我使用数值声明数组属性并尝试获取数组的长度时,它会显示长度。但当我使用字符值设置数组的属性时,数组的长度为零。为什么会这样Javascript 当我们使用字符值而不是数字定义一组数组属性时,为什么数组的长度显示为零?,javascript,arrays,Javascript,Arrays,我在练习JavaScript数组时遇到了这种情况。当我使用数值声明数组属性并尝试获取数组的长度时,它会显示长度。但当我使用字符值设置数组的属性时,数组的长度为零。为什么会这样 var数组_1=[]; 变量数组_2=[]; 数组_1[0]=“你好,世界1”; 数组_1[1]=“你好世界2”; 数组_1[2]=“你好世界3”; 数组_2['abc']=“你好世界”; 数组_2['def']=“你好,世界1”; 数组_2['ghi']=“你好,世界2”; console.log(数组长度为1); c
var数组_1=[];
变量数组_2=[];
数组_1[0]=“你好,世界1”;
数组_1[1]=“你好世界2”;
数组_1[2]=“你好世界3”;
数组_2['abc']=“你好世界”;
数组_2['def']=“你好,世界1”;
数组_2['ghi']=“你好,世界2”;
console.log(数组长度为1);
console.log(数组_2.长度)代码>您可以签入:
length属性和数组方法仅应用于具有数字索引的元素。因此,使用字符串索引添加的元素只能被视为数组对象的属性,而不是真正的数组元素
数组是javascript中的对象。因此,您可以将其视为向数组中添加字符串键元素,以及向对象中添加新属性。这就是为什么长度仅适用于添加了数字索引的数组元素
基本上,您可以认为是的一个扩展,但其属性(如push、remove或length)对集合对象都是独占的
查看以下示例以更好地了解不同场景中的用法:
var数组=[];
数组[0]=1;
//长度=1
console.log(array.length);
数组[“五”]=5;
//长度仍然=1
console.log(array.length);
数组[1]=1;
//现在的长度是=2
console.log(array.length);
数组[4]=1;
//现在的长度为=5,因为您正在向位置4添加一个元素
console.log(array.length);
console.log(数组)代码>谢谢你的回答。澄清了这一点,但创造了另一个。这会使对象和数组之间产生一些混淆。需要小心。@LalitPal实际上很简单:数组是对象,但对象不是数组。所以你基本上可以用数组做任何事情,就像用对象一样,但反过来是无效的。@LalitPal你来自PHP,不是吗?:)因为在PHP中,关联数组和数值数组是非常紧密的结构,但在JS中,数组只能有数值索引,没有关联数组或哈希映射之类的东西,它们基本上是对象。JS中几乎所有的东西都是对象,数组是对象的特例。@斯大林科,不完全是。。。我只是在JavaScript中遇到这个问题,所以我问。我对PHP不太感兴趣。现在我还没有研究PHP中的关联数组。