javascript - 宣告數組加值會產生類型為undefine的值
给我你的怀抱
给我你的怀抱 2017-07-05 10:58:20
0
1
707

JS:用物件可以取得成功的值,用數組,就會出現有型別為undefined的值

var bodydata = $("body").data(); 
// console.log(bodydata);
bodyDatas = {};/*使用了个全局变量bodyDatas*/
_.forIn(bodydata,function(value,key){
    if(typeof value == "string"){
        value = parseLodash(n);
    }
    if(value[0] == "200"){
        var keyarray = key.split('_');
        var key0 = keyarray[0];
        var key1 = keyarray[1];
        var key2 = keyarray[2];
        _.forIn(_.keys(value[2]), function(v,k) {
            if (!bodyDatas[key0]) {
                bodyDatas[key0] = {};
            }
            if (!bodyDatas[key0][key1]) {
                bodyDatas[key0][key1] = {};
            }   
            if (!bodyDatas[key0][key1][key2]) {
                bodyDatas[key0][key1][key2] = {};
            }
            if (!bodyDatas[key0][key1][key2][v]) {
                bodyDatas[key0][key1][key2][v] = value[2][v];
            }
        });        
    }else{
        console.log("取到数据头部:"+n[0]); 
    }
})

以上可以得到正確的結果。

var bodydata = $("body").data(); 
bodyDatas = new Array();/*使用了个全局变量bodyDatas*/

_.forIn(bodydata,function(value,key){
    if(typeof value == "string"){
        value = parseLodash(n);
    }
    if(value[0] == "200"){
        var keyarray = key.split('_');
        var key0 = keyarray[0];
        var key1 = keyarray[1];
        var key2 = keyarray[2];
        _.forIn(_.keys(value[2]), function(v,k) {
            if (!bodyDatas[key0]) {
                bodyDatas[key0] = [];
            }
            if (!bodyDatas[key0][key1]) {
                bodyDatas[key0][key1] = [];
            }
        });        
    }else{
        console.log("取到数据头部:"+n[0]); 
    }
})              
console.log(bodyDatas["mx"]);

上面這段程式碼是用的數組,會有預設類型為undefine的值
#雖然我用物件換數組的方式解決了這個問題,但是心裡總是存在疑問:為什麼使用陣列時,會加入了類型為undefine的值,這個值又不存在。我這個循環確實只執行了一次,那麼可能是我的陣列聲明方式有問題,裡面有個預設的值?應該如何聲明?

给我你的怀抱
给我你的怀抱

全部回覆(1)
我想大声告诉你

可以參考這個問題
/q/10...

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板