簡體   English   中英

數組中的字符串僅在嘗試獲取單個值時才返回 undefined?

[英]String in array returning undefined only when trying to get single value?

所以在桌子上做 console.log 是有效的,但是當我嘗試獲取單個值時,它會像這樣返回 undefined [undefined: "text"] 並且由於某種原因,第二個 for 循環變量始終為 5。 我不知道如何重現這個。 groupCache 和shoutCache 是空數組

//userid, groupCache, shoutCache defined above

function arraysEqual(arr1, arr2) {
    if(arr1.length !== arr2.length)
        return false;
    for(i = arr1.length; i--;) {
        if(!arr2.indexOf(arr1[i]))
            return false;
        }

    return true;
}

setInterval(function() {
    $.getJSON("https://api.roblox.com/users/" + userid + "/groups").done(function (data) {
        console.log(data)
        for (i = 0; i < data.length; i++) {
            if (!arraysEqual(data, groupCache)) {
                groupCache.push(data[i].Id.toString())
            }
        }
        for (var v = 0; v < groupCache.length; v++) {
            $.get("https://web.roblox.com/My/Groups.aspx?gid=" + groupCache[v]).done(function (dataA) {
                var elems = $(dataA);
                var finda = $('#ctl00_cphRoblox_GroupStatusPane_StatusTextField', elems);
                shoutCache[groupCache[v]] = finda.text() // does not work
                console.log(groupCache[v] + " :GC")
                console.log(shoutCache)
            })
        }
    })
}, 10000);

清單文件

{
    "manifest_version": 2,
    "background": {
        "scripts": ["/libs/jquery-3.2.1.min.js", "/scripts/Notify.js"]
    },
    "name": "Extension",
    "browser_action": {
        "default_title": "Extension"
    }, 
    "web_accessible_resources": [
        "options.html",
        "img/*.png",
        "JSON/*.json"
    ],
    "options_ui": {
        "page": "options.html",
        "chrome_style": true
    },
    "permissions": ["storage", "background"],
    "short_name": "Extension",
    "version": "0.1.0"
}

單項問題暗示您遇到了類似於 Out of Bounds 錯誤的情況。 我看到您的 for 循環從字符串的長度開始(請記住,字符串的長度總是比字符串的最后一個索引多 1),因此您應該進行以下更改:

function arraysEqual(arr1, arr2) {
    if(arr1.length !== arr2.length)
        return false;
    for(var i = arr1.length - 1; i--;) {
        if(!arr2.indexOf(arr1[i]))
            return false;
        }

    return true;
}

暫無
暫無

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

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