반복을 시도 할 때 "Uncaught TypeError : Cannot read property 'length'of undefined"를 발생시키는 중첩 된 JSON 배열

루크 타이슨

내 코드에서이 오류가 발생하는 이유를 알아 내려고합니다. Uncaught TypeError : Cannot read property 'length'of undefined.

이 오류 메시지는 "for (var j = 0; j <pluginObj.installedMimes.length; j ++)"행을 참조합니다.

이 오류가 발생하는 이유를 알 수 없으며 JSONLint를 사용하여 JSON 코드를 확인했으며 오류가 없다고 말했습니다. 모든 도움과 제안을 주시면 감사하겠습니다!

var pluginsJson = {
    "installedPlugins": [
        {
            "pluginName": "Chrome PDF Viewer",
            "pluginVersion": "",
            "pluginDescription": "Portable Document Format",
            "pluginFilename": "internal-pdf-viewer",
            "installedMimes": [
                {
                    "mimeType": "application/x-google-chrome-pdf",
                    "mimeDesc": "Portable Document Format",
                    "mimeSuffixes": "pdf"
                },
                {
                    "mimeType": "application/x-nacl",
                    "mimeDesc": "Native Client Executable",
                    "mimeSuffixes": ""
                }
            ]
        },
        {
            "pluginName": "Widevine Content Decryption Module",
            "pluginVersion": "",
            "pluginDescription": "Enables Widevine licenses for playback of HTML audio/video content. (version: 1.4.8.866)",
            "pluginFilename": "widevinecdmadapter.dll"
        },
        {
            "pluginName": "Shockwave Flash",
            "pluginVersion": "",
            "pluginDescription": "Shockwave Flash 21.0 r0",
            "pluginFilename": "pepflashplayer.dll"
        },
        {
            "pluginName": "Native Client",
            "pluginVersion": "",
            "pluginDescription": "",
            "pluginFilename": "internal-nacl-plugin"
        }
    ]
};

var pluginString = "";
var pluginObj;
var mimeObj;

for (var i = 0; i < pluginsJson.installedPlugins.length; i++) {
    pluginObj = pluginsJson.installedPlugins[i];

    pluginString += pluginObj.pluginName;
    pluginString += " | ";
    pluginString += pluginObj.pluginFilename;
    pluginString += " | ";
    pluginString += pluginObj.pluginDescription;
    pluginString += " | ";
    pluginString += pluginObj.pluginVersion;
    pluginString += "<br>";

    for (var j = 0; j < pluginObj.installedMimes.length; j++) {
        mimeObj = pluginObj.installedMimes[j];

        pluginString += mimeObj.mimeType;
        pluginString += " /\ ";
        pluginString += mimeObj.mimeDesc;
        pluginString += " /\ ";
        pluginString += mimeObj.mimeSuffixes;
        pluginString += "<br>";
    }
    pluginString += "<br>";
}
미하이 딘쿨 레스 쿠

모든 pluginObj정의 가 아니기 때문에 오류가 발생 합니다 installedMimes.

두 가지 방법으로이 문제를 해결할 수 있습니다.

a) "installedMimes": []json에있는 모든 플러그인에 추가 합니다.

b) JS 코드를 업데이트하여 installedMimes.

if (pluginObj.installedMimes) {
    for (var j = 0; j < pluginObj.installedMimes.length; j++) {
        ...
    }
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관