Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 - Fatal编程技术网

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

我在练习JavaScript数组时遇到了这种情况。当我使用数值声明数组属性并尝试获取数组的长度时,它会显示长度。但当我使用字符值设置数组的属性时,数组的长度为零。为什么会这样

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中的关联数组。