簡體   English   中英

JavaScript數組-未捕獲的TypeError:無法讀取屬性'length'

[英]JavaScript Array - Uncaught TypeError: Cannot read property 'length'

我正在開發使用內部數據庫的Cordova / Phonegap應用程序...通常,我會執行查詢,然后以這種方式讀取結果:

for (var i=0;i<results.rows.length;i++)
{
     name=(results.rows.item(i).name);
     alert(name);
}

由於RANDOM() SQLite函數給我帶來了問題 ,所以我決定自己弄亂結果:

function shuffle(array) {
    var counter = array.length, temp, index;

    // While there are elements in the array
    while (counter > 0) {
        // Pick a random index
        index = Math.floor(Math.random() * counter);

        // Decrease counter by 1
        counter--;

        // And swap the last element with it
        temp = array[counter];
        array[counter] = array[index];
        array[index] = temp;
    }

    return array;
}
var resultArray = [];
for(var x=0; x < results.rows.length; x+=1) {
     resultArray.push(results.rows.item(x));
}
var res = shuffle(resultArray);
for (var i=0;i<res.rows.length;i++){
     name=(res.rows.item(i).name);
}

錯誤:

Uncaught TypeError: Cannot read property 'length' of undefined

為什么會這樣呢? 我該如何解決呢? 謝謝!

var res = shuffle(resultArray);
for (var i=0;i<res.length;i++){
     name=(res.item(i).name);
}

如果是這樣的話 ?

或更好

var res = shuffle(resultArray);
for (var i=0;i<res.length;i++){
     name=(res[i].name);
}

如果不是,請在控制台中顯示您所擁有的

var res = shuffle(resultArray);
console.log(res);
for (var i=0;i<res.length;i++){
     name=(res[i].name);
     console.log(res[i]);
}

PS,請記住,所有值都設置在單個變量“名稱”中-因此它們會互相踢

您只將resultArray推送到沒有行的項目,因此您只需要通過resultArray本身進行遍歷。

resultArray.push(results.rows.item(x));

為此用途:

var res = shuffle(resultArray);
for (var i=0; i < res.length; i++) {
    name = (res[i].name);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM