【问题标题】:Go over JSON object with running index遍历带有运行索引的 JSON 对象
【发布时间】:2017-08-19 23:28:19
【问题描述】:

我有以下 JSON:

var myObj;
myObj = {
    "name": "A",
    "r1":"y",
    "r2":"n",
    "r3":"y",
    "lname": "B"
};

//And I want to iterate on this object by for loop as follows:

         for (var j=1 ; j<= 3 ; j++)
         {
            var tmpR = "r" + j;
            if(myObj.tmpR == "y")
            {
              //some code...
            }
         }

它不起作用,我总是得到"undefined",例如,如果我输入"r1" 而不是tmpR 就可以了。

如何迭代这个对象? 我不想为r1, r2 等单独写 if。

【问题讨论】:

    标签: javascript json angular for-loop


    【解决方案1】:

    在代码中,您要在不存在的对象中搜索名为“tmpR”的键,您需要使用括号表示法。

    var myObj;
    myObj = {
        "name": "A",
        "r1":"y",
        "r2":"n",
        "r3":"y",
        "lname": "B"
    };
    
    for (var j = 1; j <= 3; j++) {
        var tmpR = "r" + j;
        if(myObj[tmpR] == "y") {
            console.log('key: ' + tmpR + ' value: ' + myObj[tmpR]);
        }
    }

    【讨论】:

      【解决方案2】:

      如果要访问对象的各个属性,则可以使用索引运算符,例如myObj['r1']。例如,您的循环可能如下所示:

      for (var j = 1; j <= 3; j++) {
        var tmpR = "r" + j;
        var r = myObj[tmpR];
        if (r == "y") {
          //some code...
        }
      }
      

      【讨论】:

        【解决方案3】:

        您正在寻找一个在您的 jason 对象中不存在的属性。你需要这样做:

        for (var j=1 ; j<= 3 ; j++) {
                if(myObj['r'+j] === "y") {
                  //some code...
                }
             }
        

        【讨论】:

          【解决方案4】:

          here 所述,有两种方法可以访问对象的属性。

          当您想通过动态变量访问对象属性时,您必须使用括号表示法

          可以看例子,写的更实用:

          const myObj = {
              "name": "A",
              "r1":"y",
              "r2":"n",
              "r3":"y",
              "lname": "B"
          };
          
          [1,2,3].map(n => `r${n}`)
                 .filter(k => myObj[k] === 'y')
                 .forEach(k => console.log(`Key: ${k} - value: ${myObj[k]}`));
          

          【讨论】:

            猜你喜欢
            • 2017-12-28
            • 2015-01-11
            相关资源
            最近更新 更多