在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ js數(shù)組和對象問題

js數(shù)組和對象問題

在封裝方法的時候發(fā)現(xiàn)個問題,顛覆我對數(shù)組的看法,直接貼代碼:

String.prototype.replaces=function(reg,str){
    var arr = [];
    var newStr= this;
    var i= '';
    var d;
    while((d = reg.exec(newStr))!=null) {
        //debugger
        try{
            //console.log(d)
            if(reg.global){
                arr = newStr.split(d[0]);
                newStr = arr.join(str);
                continue
            }else{
                if(reg.ignoreCase){
                    console.log(d instanceof Array);
                    for(var x of d){
                        console.log(x)
                    }
                }
                break;
            }
            
        }catch(e){
            console.log(e)
        }
        
    }
    return newStr
    
}

var s ="我是a,c,a,cc,c,c,cc".replaces(/a/i,'b')
console.log(s);

把上面代碼直接貼到控制臺就可以測試,問題來了,d這個變量,他到底是array還是object

打印出的d:
clipboard.png

console.log(d instanceof Array)得出d是數(shù)組,但是用for循環(huán)和for of
都只能打印出一個變量,用d[1]訪問會報錯,d['index']則不會報錯反而正確,
如果他是對象數(shù)組,則d[1]['index']才會正確吧?

回答
編輯回答
爆扎

js中并沒有真正意義上的數(shù)組,你所用的數(shù)組是偽數(shù)組,實際上是一個對象。
首先你肯定能理解下面這段代碼

var a={"index":"1"}
console.info(a["index"])//結(jié)果為1

那么這樣你理解起來也沒問題了

var a={"0":"1"}
console.info(a["0"])//結(jié)果為1
console.info(a[0])//更進一步,結(jié)果為1

讓我們變得更像數(shù)組一點


var a={"0":"1","1":"3","2":"1",length:3}

你完全可以自己寫一個數(shù)組出來

2017年5月23日 17:02
編輯回答
款爺

var a=[];
a['aa']=1;
a instanceof Array
關(guān)聯(lián)數(shù)組
a.length=10;
for(let i of a){console.log(i)}
of是根據(jù)length來的 不會遍歷到非數(shù)字下表

2017年10月4日 11:01
編輯回答
不將就

是數(shù)組,數(shù)組其實也是對象,它上面可以掛載其他屬性

2018年1月9日 03:29