Javascript中.length背后的概念
阵列的大小是4,为什么不是5?这与.push方法有关吗Javascript中.length背后的概念,javascript,Javascript,阵列的大小是4,为什么不是5?这与.push方法有关吗 var box = []; box.push({ "cat": "kitten" }) box.push("a string"); box.push(111); //comment var boxObject = {} boxObject["material"] = "cardboard"; boxObject["dimensions"] = { "height": 2, "width": 60 } //comment box
var box = [];
box.push({
"cat": "kitten"
})
box.push("a string");
box.push(111); //comment
var boxObject = {}
boxObject["material"] = "cardboard";
boxObject["dimensions"] = {
"height": 2,
"width": 60
} //comment
boxObject["array property Inside object"] = ["U2", "REM"];
boxObject.area = function() {
return box.dimensions.height * box.dimensions.width;
}
box.push(boxObject); //comment
box["myitem"] = "cat";
console.log(`size of array is ${box.length}`);
for (var item in box) {
console.log(`type:${typeof box[item]} and value:`,
box[item]);
}
console.log(`size of array is ${box.length}`);
for (var item2 in box) { // prints 5 properties
console.log(item2)
}
我期望。长度为5,但返回4。这与.push方法有关吗?预期值为4而不是5。详细描述了发生这种情况的原因:
var box = [];
box.push({
"cat": "kitten"
})
box.push("a string");
box.push(111); //comment
var boxObject = {}
boxObject["material"] = "cardboard";
boxObject["dimensions"] = {
"height": 2,
"width": 60
} //comment
boxObject["array property Inside object"] = ["U2", "REM"];
boxObject.area = function() {
return box.dimensions.height * box.dimensions.width;
}
box.push(boxObject); //comment
box["myitem"] = "cat";
console.log(`size of array is ${box.length}`);
for (var item in box) {
console.log(`type:${typeof box[item]} and value:`,
box[item]);
}
console.log(`size of array is ${box.length}`);
for (var item2 in box) { // prints 5 properties
console.log(item2)
}
在JavaScript数组上设置属性时,当属性为
有效数组索引,且该索引超出
数组,引擎将相应地更新数组的长度属性
数组的.length将只计算数字键。尽管框[myitem]=cat;确实会将名为myitem的属性添加到长方体数组中,该键不是数字,因此尽管在使用in遍历属性名称时会显示该键,但它不会包含在长度中
您只调用了。按4次,因此结果的长度仅为4
例如,如果指定给数值属性而不是myitem,如果指定给属性4,则确实会看到长度发生变化。box[myitem]=cat;正在设置长方体上的属性。使用长度可以获得数字键
var-box=[];
推箱子{
猫:小猫
}
box.pusha字符串;
方框111//议论
var-boxObject={}
boxObject[材料]=硬纸板;
boxObject[尺寸]={
身高:2,
宽度:60
}//注释
boxObject[对象内部的数组属性]=[U2,REM];
boxObject.area=函数{
返回框。尺寸。高度*框。尺寸。宽度;
}
box.pushboxObject//议论
框[myitem]=类别;
控制台日志箱
log`数组的大小为${box.length}`;
对于框中的var项目{
console.log`type:${typeof box[item]}和value:`,
方框[项目];
}
log`数组的大小为${box.length}`;
对于框{//中的var item2,打印5个属性
console.logitem2
}这是一个非常不清楚的问题。当我执行box[myitem]=cat时会发生什么?最后一次迭代打印5个items4索引和1个属性name@MaheerAli感谢mate的反馈。只要阅读代码,您就会理解。因此,没有方法可以从这样的数组中获取并返回项数?如果您想获取所有可枚举键的列表,可以使用Object.keysbox.length