Javascript可以';是否不使用数组内容作为数组索引?

Javascript可以';是否不使用数组内容作为数组索引?,javascript,arrays,Javascript,Arrays,当我尝试运行js代码时,它总是说“UncaughtTypeError:Cannotreadproperty'\uID'of undefined” 所以经过一番思考,我相信问题在于 var j = deploy[i]; 有办法解决吗?提前谢谢 以下是完整的代码: var deploy = []; var deployedID = []; var deployedename = []; var deployedoname = []; var deployed

当我尝试运行js代码时,它总是说“UncaughtTypeError:Cannotreadproperty'\uID'of undefined”

所以经过一番思考,我相信问题在于

var j = deploy[i];
有办法解决吗?提前谢谢

以下是完整的代码:

    var deploy = [];
    var deployedID = [];
    var deployedename = [];
    var deployedoname = [];
    var deployedrank = [];

function popularizeTable(){
    $.get("/SSS/getlist", function(data){
        deploy = randomunique(data.length ,100);
        for (var i = 0; i < 100; i++){
            var j = deploy[i];
            deployedID.push(data[j]._id);
            deployedename.push(data[j].ename);
            deployedoname.push(data[j].oname);
            deployedrank.push(data[j].rank);
        }
        var str = " ";
        var k = 0;
        for (var i = 0; i < 5; i++){
            str += "<tr>";
            for(var j = 0; j < 20; j++){            
                str += "<td><section id=\"" + deployedID[k] + "\" class=\"container\"><div class=\"card\">"
                str += "<figure class=\"front\"><img src=\"images/back.jpg\"></figure>";
                str += "<figure class=\"back\"><img src=\"images/Clear/" + deployedename[k] + "/001.jpg\"></figure></div></td></section>";
                k++;
            } 
            str += "</tr>";     
        }
        $("#table").append(str);
    });
}

$( document ).ready(function() {
    popularizeTable();
    $(document).on("mouseover", ".card", function(){
        $(this).toggleClass("flipped")});
});

function randomunique(max, num){
    var uniquelist = [];
    for (var j = uniquelist.length; j < num; j++){
        var i = parseInt(Math.random() * (max - 1) + 1);
        if (uniquelist.indexOf(i) == -1){
            uniquelist.push(i);
        }
    }
    return uniquelist;
}
var-deploy=[];
var deployedID=[];
var deployedName=[];
var deployedName=[];
var deployedrank=[];
函数表(){
$.get(“/SSS/getlist”,函数(数据){
部署=随机唯一(data.length,100);
对于(变量i=0;i<100;i++){
var j=部署[i];
deployedID.push(数据[j]。\u id);
deployedName.push(数据[j].ename);
deployedName.push(数据[j].oname);
deployedrank.push(数据[j].rank);
}
var str=“”;
var k=0;
对于(变量i=0;i<5;i++){
str+=”;
对于(var j=0;j<20;j++){
str+=“”
str+=”;
str+=”;
k++;
} 
str+=”;
}
$(“#表”)。追加(str);
});
}
$(文档).ready(函数(){
表();
$(document).on(“mouseover”,“.card”,function()){
$(this.toggleClass(“翻转”)});
});
函数随机唯一(最大值,num){
var uniquelist=[];
for(var j=uniquelist.length;j
yeah确保
data[j]
exists当您使用
console.log(data)时会得到什么?您确定您的响应被解析为JSON吗?@Thomas是正确的-您的问题是
data[j]
不存在。我看到您在哪里定义了私有变量
j
,但没有看到您在哪里将其与
数据
变量相关联。我看到它正在被传递到您的
$.get()
函数中,但没有看到关联。
randomunique
似乎正在创建一个随机的、不同的数字数组。然后,您将使用其中一个数字作为从
GET
请求返回的
数据的属性或索引。由于随机、不同的数字必须在一个范围内,我想你知道它们应该在1-100(最大值)之间。您确定返回的
数据
是具有那么多索引的数组,还是具有这些属性的对象?
数据的结构是什么?另外,以随机顺序生成数字1-100的数组是一种效率相当低的方法。@Thomas数据应该有166个条目,deploy应该包含100个介于0到165之间的不同数字。因此,数据[j]应该存在。
    var deploy = [];
    var deployedID = [];
    var deployedename = [];
    var deployedoname = [];
    var deployedrank = [];

function popularizeTable(){
    $.get("/SSS/getlist", function(data){
        deploy = randomunique(data.length ,100);
        for (var i = 0; i < 100; i++){
            var j = deploy[i];
            deployedID.push(data[j]._id);
            deployedename.push(data[j].ename);
            deployedoname.push(data[j].oname);
            deployedrank.push(data[j].rank);
        }
        var str = " ";
        var k = 0;
        for (var i = 0; i < 5; i++){
            str += "<tr>";
            for(var j = 0; j < 20; j++){            
                str += "<td><section id=\"" + deployedID[k] + "\" class=\"container\"><div class=\"card\">"
                str += "<figure class=\"front\"><img src=\"images/back.jpg\"></figure>";
                str += "<figure class=\"back\"><img src=\"images/Clear/" + deployedename[k] + "/001.jpg\"></figure></div></td></section>";
                k++;
            } 
            str += "</tr>";     
        }
        $("#table").append(str);
    });
}

$( document ).ready(function() {
    popularizeTable();
    $(document).on("mouseover", ".card", function(){
        $(this).toggleClass("flipped")});
});

function randomunique(max, num){
    var uniquelist = [];
    for (var j = uniquelist.length; j < num; j++){
        var i = parseInt(Math.random() * (max - 1) + 1);
        if (uniquelist.indexOf(i) == -1){
            uniquelist.push(i);
        }
    }
    return uniquelist;
}