【问题标题】:getting value inside array with for loop使用 for 循环在数组中获取值
【发布时间】:2016-07-18 17:25:09
【问题描述】:

我有:

var myVariable= {
    var_one: ["satu", 'uno'],
    var_two: ["dua", 'dos'],
    var_three: ["tiga", 'tres'],
    var_four: ["empat", 'cuatro'],
    var_five: ["lima", 'cinco'],
    var_six: ["enam", 'seis']
};

for (var component in myVariable) {
    document.getElementById(component[0]).value = '';
}

这里的问题是: 组件值实际上正在返回:

var_one ... var_six

在我期待的时候:

萨图...埃南

for in 循环如何获取我的数组值?

【问题讨论】:

    标签: javascript arrays for-loop syntax


    【解决方案1】:

    您正在做的是迭代对象中的键,而不是值。所以你的代码看起来像:

    for (var key in myVariable) {
        var value_you_want = myVariable[key][0];
        document.getElementById(value_you_want).value = '';
    }
    

    跟进:

    在某些情况下,您可能还需要检查以确保键是对象的属性而不是对象的原型:

    for (var key in myVariable) {
        var value_you_want = myVariable[key][0];
    
        if(myVariable.hasOwnProperty(key)) {                  //Include this condition
            document.getElementById(value_you_want).value = '';
        }
    }
    

    【讨论】:

      【解决方案2】:

      component 是键而不是值,请使用:

      var myVariable= {
          var_one: ["satu", 'uno'],
          var_two: ["dua", 'dos'],
          var_three: ["tiga", 'tres'],
          var_four: ["empat", 'cuatro'],
          var_five: ["lima", 'cinco'],
          var_six: ["enam", 'seis']
      };
      
      for (var component in myVariable) {
          document.getElementById(myVariable[component][0]).value = '';
      }
      

      【讨论】:

        【解决方案3】:

        for...in 循环遍历数组中的索引,而不是值。

        如果你有数组

        ["one", "two", "three"]
        

        然后一个 for...in 循环将返回

        0, 1, 2
        

        如果你有 ES6 或者你需要这样做,你需要使用 for...of 循环

        var value = myArray[component]
        

        从对象中获取数组

        【讨论】:

          【解决方案4】:

          要检索对象键的值,请使用object.key 在您的情况下,它将返回一个数组。如果您需要零索引的元素,请执行myVariable[component][0]

          var myVariable= {
              var_one: ["satu", 'uno'],
              var_two: ["dua", 'dos'],
              var_three: ["tiga", 'tres'],
              var_four: ["empat", 'cuatro'],
              var_five: ["lima", 'cinco'],
              var_six: ["enam", 'seis']
          };
          
          for (var component in myVariable) {
              document.getElementById(myVariable[component][0]).value="";
          }
          

          【讨论】:

            【解决方案5】:

            像这样使用密钥component

            myVariable[component][0]
            

            【讨论】:

              【解决方案6】:

              您可以使用for...in 循环中的键来获取值:

              for (var component in myVariable) {
                  document.getElementById(myVariable[component][0]).value = '';
              }
              

              或者,如果myVariable 是可迭代的,您可以使用for...of 循环:

              var myVariable= [["satu", 'uno'],
                  ["dua", 'dos'],
                  ["tiga", 'tres'],
                  ["empat", 'cuatro'],
                  ["lima", 'cinco'],
                  ["enam", 'seis']
                  ];
              
              for (var component of myVariable) {
                  console.log(component[0]);
              }
              

              【讨论】:

              • 这个解决方案很有趣,但它给了我错误:Uncaught TypeError: myVariable[Symbol.iterator] is not a function
              • 你是对的,这是因为原始问题中的变量是一个具有键值对的对象。我已经编辑了我的答案,以展示它如何与 for...of 循环一起工作。
              • 我不能那样做,因为我将来需要键值:)
              猜你喜欢
              • 1970-01-01
              • 2017-12-11
              • 2022-10-16
              • 1970-01-01
              • 2013-09-22
              • 2017-01-20
              • 1970-01-01
              • 2015-03-01
              • 2013-04-24
              相关资源
              最近更新 更多