让JS数组没有密钥
代码1
var psnb_arr=['14-007', '14-008', '14-009'];
console.log(psnb_arr);
//output in firebug: ["14-007", "14-008", "14-009"]
代码2
for (var i in psnb_arr) {
var psnb=psnb_arr[i];
console.log(i+'-'+psnb);
}
//wierd output in firebug:
0-14-007
1-14-008
2-14-009
copy-function (start,length){start=start||0;if(start<0)start=this.length+start;
length=length||(this.length-start);var newArray=[];for(var i=0;i<length;i++)newArray[i]=this[start++];return newArray;}
remove-function (item){var i=0;var len=this.length;while(i<len){if(this[i]===item){this.splice(i,1);len--;}else{i++;}} return this;}
contains-function (item,from){return this.indexOf(item,from)!=-1;}
...
循环中对于console.log的firebug中这个奇怪的输出是什么? 我的意思是“2-14-009”之后的文字 - “复制功能......”
答案 0 :(得分:2)
您没有对象,也没有关联数组(JavaScript中不存在这些数组)。你在“普通”(数字)数组中有什么。 有钥匙;数组索引(0-
等来自的地方)。
您遇到的问题是因为您在阵列上使用for...in
。这是一种不好的做法。 Array
原型可以包含属性(有时候JavaScript库会添加这些属性),因此您将迭代这些属性的所有,而不仅仅是数组值。
你想在这里使用普通的for
循环。
for(var i = 0; i < psnb_arr.length; i++){
var psnb=psnb_arr[i];
console.log(i+'-'+psnb);
}