【问题标题】:Key value paired array element returns "undefined" error while it is assigned the value in given index javascript键值配对数组元素在给定索引javascript中分配值时返回“未定义”错误
【发布时间】:2019-05-09 09:14:04
【问题描述】:

我的代码需要四个键/值配对数组,并根据条件递减每个数组的值。 在检查给定值是否大于 0 时,我在四个数组中的每一个中随机出现“未定义”错误,我不知道如何解决这个问题

这是我的代码:

Asett=[
    "A" ,
    "B",
    "C" 
]
var Bset = [
    "D",
    "E",
    "F" 
];
var Cset = [
    "G" ,
    "H",
    "I" 
];
var Dset = [
    "J",
    "K",
    "L"
];  
var cSets = [];
var vSets=[];
var dSets=[];
var fSets=[];

function initiate(){ //this function initiates the given arrays with defined elements and value equal to 10 
    for (var iv=0;iv<3;iv++){
        cSets.push({
            key: Asett[iv],
            rem:10
        })
    }
    for (var iv=0;iv<3;iv++){
        vSets.push({
            key: Bset[iv],
            rem:10
        })
    }
    for (var iv=0;iv<3;iv++){
        dSets.push({
            key: Cset[iv],
            rem:10
        })
    }
    for (var iv=0;iv<3;iv++){
        fSets.push({
            key: Dset[iv],
            rem:10
        })
    }
}
initiate();
generateList(cSets,vSets,dSets,fSets);  
function generateList(cSets,vSets,dSets,fSets){
    var j=0;
    var k=0;
    var l=0;
    var m=0;
    var taskL = []; // create an empty array
    var f=0;
    for (var i=0; i<27;i++){
        j=getRndInteger(0,2);
        k=getRndInteger(0,2);
        l=getRndInteger(0,2);
        m=getRndInteger(0,2);
        var combinations="";
        while (cSets[j].rem<=0) // I get cSets[j] undefined error 
              {
                j=(j % 3) +1;
              }
        combinations+=comSets[j].key+",";
        comSets[j].rem--;

        while (vSets[k].rem<=0) //I get vSets[k] undefined error
        {
            k=(k % 3) +1;
        }
        combinations+=vSets[k].key+",";
                vSets[k].rem--;
        while (dSets[l].rem<=0) //I get dSets[l] undefined error
        {
            l=(l % 3) +1;
        }
        combinations+=changeSets[l].key+",";
                changeSets[l].rem--;

                while (fSets[m].rem<=0) //I get fSets[m] undefined error
        {
             m=(m % 3) +1;
        }
        combinations+=fSets[m].key+",";
                fSets[m].rem--;

        taskL[f++]=combinations;

    }
}   

在这段代码中,我希望我的 taskL 数组能够获得组合,但是我随机收到每个给定集合(cSets、vSets、dSets 和 fSets)的未定义错误,即使它们被赋值。任何帮助将不胜感激

【问题讨论】:

  • 什么是getRndInteger(0,2)
  • 它是一个获取0到2之间的随机整数的函数

标签: javascript arrays hashmap undefined


【解决方案1】:

你必须改变所有的 j=(j % 3) +1;这些进入 j=(j+1) % 3 这样,当您的 j 为 2 时,它将为 +1,它将为 3,然后 %3 它将为 0,因此您不会超出边界异常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    • 1970-01-01
    • 2021-08-25
    • 1970-01-01
    相关资源
    最近更新 更多