Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.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_Object_Associative Array - Fatal编程技术网

为什么在javascript数组中自动创建索引?

为什么在javascript数组中自动创建索引?,javascript,arrays,object,associative-array,Javascript,Arrays,Object,Associative Array,如果我尝试使用digit作为属性创建一个关联数组,它会自动插入其他具有空值的值 我尝试传递字符串myArray['myProp'],此时数组长度为零。它只在我传递数字时发生,不管是字符串形式 常量myArray=[]; myArray[5]=“我的值”;//假设这里的索引是5 console.logmyArray.length 这是因为您正在数组中存储索引5的值 一个对象很可能会起作用 const obj = {}; obj["5"] = "My value"; // { "5": "My v

如果我尝试使用digit作为属性创建一个关联数组,它会自动插入其他具有空值的值

我尝试传递字符串myArray['myProp'],此时数组长度为零。它只在我传递数字时发生,不管是字符串形式

常量myArray=[]; myArray[5]=“我的值”;//假设这里的索引是5
console.logmyArray.length 这是因为您正在数组中存储索引5的值

一个对象很可能会起作用

const obj = {};
obj["5"] = "My value";
// { "5": "My value" }
或者是地图

const myMap = new Map();
myMap.set(5, 'My value');
console.log(myMap.size;) // 1

这是因为您正在数组中存储索引5的值

一个对象很可能会起作用

const obj = {};
obj["5"] = "My value";
// { "5": "My value" }
或者是地图

const myMap = new Map();
myMap.set(5, 'My value');
console.log(myMap.size;) // 1
myArray[5]将尝试查找第5个索引,但它不能跳过0-4,因为在这种情况下,它们将填充未定义的索引。您可以使用Object.values,它提供除未定义之外的任何内容,并检查其长度

常量myArray=[]; myArray[5]=“我的值”;//假设这里的索引是5 console.logmyArray; //获取除未定义之外的所有内容 设newArr=Object.valuesmyArray console.lognewArr.length myArray[5]将尝试查找第5个索引,但它不能跳过0-4,因为在这种情况下,它们将填充未定义的索引。您可以使用Object.values,它提供除未定义之外的任何内容,并检查其长度

常量myArray=[]; myArray[5]=“我的值”;//假设这里的索引是5 console.logmyArray; //获取除未定义之外的所有内容 设newArr=Object.valuesmyArray

console.lognewArr.length;你的期望是什么?为什么不使用对象而不是数组?这里myArray的长度应该是“1”…@Mark Meyer,我可以这么做,但我想知道为什么会发生这种情况。任何文档参考都很好…这是数组的默认行为。你期望什么?你期望什么?为什么不使用对象而不是数组?myArray的长度应该是1…@Mark Meyer,我可以这么做,但我想知道为什么会发生这种情况。任何文档参考都很好…这是数组的默认行为。你期待什么?如果我这样做,同样的事情也会发生。。。常数指数='5';myArray[index]=“我的值”;您正在用[]初始化myArray,这意味着它创建的是数组数据类型而不是对象。javascript中数组的数据类型是object。@Pavelosha行为不同。如果希望数组中的length属性只返回元素的实际数量,则需要自己完成。尝试迭代元素并检查它是否未定义。如果我这样做,同样的情况也会发生。。。常数指数='5';myArray[index]=“我的值”;您正在用[]初始化myArray,这意味着它创建的是数组数据类型而不是对象。javascript中数组的数据类型是object。@Pavelosha行为不同。如果希望数组中的length属性只返回元素的实际数量,则需要自己完成。尝试迭代元素并检查它是否未定义。感谢您的帮助。。。但如果我们像这样传递myArray[5],则不应该发生这种情况:0-4个索引将是洞,而不是未定义的,它在堆栈片段中显示为未定义的though@adiga,你是对的,但是定义孔和直观地解释它有点挑战性。。。但如果我们像这样传递myArray[5],则不应该发生这种情况:0-4个索引将是洞,而不是未定义的,它在堆栈片段中显示为未定义的though@adiga,您是对的,但是定义漏洞并直观地解释它有点困难