鍍金池/ 問(wèn)答/網(wǎng)絡(luò)安全  HTML/ js中如何遍歷數(shù)組的非規(guī)則的下標(biāo)?

js中如何遍歷數(shù)組的非規(guī)則的下標(biāo)?

假設(shè)有一數(shù)組
a=new Array(3)
a[0]=1
a["a"]="a"
a[2]=2

假設(shè)我不知道下標(biāo)是0,“a”,2,我怎樣遍歷出這個(gè)數(shù)組的下標(biāo)0,"a",2出來(lái)?
感覺(jué)js的數(shù)組和字典很類(lèi)似啊,是不是可以當(dāng)成字典來(lái)用了?

回答
編輯回答
吃藕丑

for in有人說(shuō)了,還有Object.keys,當(dāng)然前提是兼容性好,ie什么的就算了吧

 console.log( Object.keys(a));
2017年2月28日 15:27
編輯回答
賤人曾

理論上js中任何對(duì)象都可以做為字典來(lái)用,但是你拿數(shù)組當(dāng)字典用就會(huì)有下面的問(wèn)題比如:

var myArray = [ "foo", 42, "bar" ];
    myArray["3"] = "baz";
    myArray.length; // 4
    myArray[3]; // "baz"

你這里是想添加一個(gè)3的屬性,但是卻做了改變第3個(gè)元素的事情?。?!這就是它的副作用

js中適合做字典的有 空對(duì)象,或者ES6的Map,但是map可能一些瀏覽器不支持。
所以這種方式是我比較推薦的,就是創(chuàng)建一個(gè)空對(duì)象 Object.create(null);然后配上
屬性訪(fǎng)問(wèn)語(yǔ)法:obj["foo"]= bar; 和 for in 來(lái)使用

2018年8月30日 04:57
編輯回答
神曲
for (var k in a) {
  console.log(k)
}

可以當(dāng)成字典用

ES6新增了Map類(lèi)型,也類(lèi)似字典
http://es6.ruanyifeng.com/?se...

2017年4月25日 15:53