Javascript 了解数组长度与属性长度?
我有以下代码将信息插入数组。对于这个例子,我只插入索引。当查看Chrome控制台时,我可以看到阵列的长度是正确的Javascript 了解数组长度与属性长度?,javascript,jquery,arrays,javascript-objects,Javascript,Jquery,Arrays,Javascript Objects,我有以下代码将信息插入数组。对于这个例子,我只插入索引。当查看Chrome控制台时,我可以看到阵列的长度是正确的(11)[6,7,8,9,10,11,12,13,14,15,16]。但是,当我展开数组时,有重复的信息,它说长度是34?我看到以下情况: (11) [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] 0: 6 1: 7 2: 8 3: 9 4: 10
(11)[6,7,8,9,10,11,12,13,14,15,16]
。但是,当我展开数组时,有重复的信息,它说长度是34?我看到以下情况:
(11) [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
0: 6
1: 7
2: 8
3: 9
4: 10
5: 11
6: 12
7: 13
8: 14
9: 15
10: 16
11: 6 // seems to repeat itself?
12: 7
13: 8
14: 9
15: 10
16: 11
17: 12
18: 13
19: 14
20: 15
21: 16
22: 6
23: 7
24: 8
25: 9
26: 10
27: 11
28: 12
29: 13
30: 14
31: 15
32: 16
33: 17 // where is this 17 coming from?
length: 34
有人知道为什么我在展开时将34视为长度吗?
代码:
var html = $($(xml).find("filters").html()).find("li");
var inputs = $(html).find("input");
var types = [];
inputs.each(function(index) {
if ($(this).prop("id").indexOf("filter-types") >= 0)
{
types.push(index);
}
});
console.log(types);
console.log将显示当前记录的对象,因此当您展开它时,它可能与显示的预览不同 在控制台中运行以下命令时
var arr = [1,2,3];
console.log("different when you expand",arr);
console.table(arr);
setTimeout(()=>{
Array.from(new Array(100),()=>0).forEach(()=>arr.push(arr.length))
},10);
当您展开(3)[1,2,3]时,它将显示:不同。
但是当您展开它时,您可以看到数组的长度不再是3,也不再是值1,2,3
Console.table将以打印对象时的方式显示对象。输入的位置或内容,以及显示的数组是否为
类型
?添加调试器代码>在if
语句上方,并在浏览器控制台中单步执行代码。也许一个正在工作的JSFIDLE会有所帮助。类型的初始值是什么?输入是输入元素的html:注意:控制台中的对象在展开时会更新,日志的第一行除外。因此,无论您使用什么代码,都很可能在您记录阵列之后,但在您扩展阵列之前,对其进行操作array@Michael是的,这是您提供的代码和您拥有的代码之间相当重要的区别。