【问题标题】:Get key and value of a JavaScript array into variable将 JavaScript 数组的键和值获取到变量中
【发布时间】:2017-03-31 13:27:32
【问题描述】:

我有一个 JavaScript 对象数组。当写入console.log(myarry) 时,它将以下面的形式显示在控制台中。

Array[2]
0: Object
one: "one"

1: Object
two: "two"
length: 2

在这个数组中,我的键和值是相同的,我试图获取一个变量的键或值并打印它。当我尝试下面的代码时,它显示:

对象对象

for (var key in myarry) {
 alert("Key is " + key + ", value is" + myarry[key]);
}

【问题讨论】:

  • 使用for-loop 而不是for-in 来迭代数组...另请阅读Object.keys 以获取object 的键
  • 你能告诉我你在for之前的代码吗?你在哪里将值分配给myarray
  • 实际上是来自第三方 api 的数组,当我以上述格式编写 console.log(myarry) 时,我可以看到该数组。我的目标是将键或值放入变量中。我也尝试过 for 循环。但它也显示对象对象。
  • 不是“java script”或“java-script”;它是“JavaScript”。
  • 当一个对象被“打印”(即转换为字符串)时,它变成[object Object]。如果你想打印出一些合理的对象表示,你可以使用JSON.stringify,或者你自己做字符串转换。

标签: javascript arrays


【解决方案1】:

检查这个sn-p

var obj = [{
  "1": "one"
}, {
  "2": "two"
}]
obj.forEach(function(item) {
  Object.keys(item).forEach(function(key) {
    console.log("key:" + key + "value:" + item[key]);
  });
});

希望对你有帮助

【讨论】:

    【解决方案2】:
    • 使用 for-loop 代替 for-in 来迭代数组。

    • 使用Object.keys获取object的key

    var arr = [{
      one: 'one'
    }, {
      two: 'two'
    }];
    
    for (var i = 0, l = arr.length; i < l; i++) {
      var keys = Object.keys(arr[i]);
      for (var j = 0, k = keys.length; j < k; j++) {
        console.log("Key:" + keys[j] + "  Value:" + arr[i][keys[j]]);
      }
    }

    【讨论】:

      【解决方案3】:

      我认为您有两个主要选项可以使用Object.keys 获取对象的键,它们是:forEach;或一个简单的for

      1。使用forEach

      如果您使用的环境支持 ES5 的 Array 功能(直接或使用 shim),则可以使用新的 forEach

      var myarray = [{one: 'one'}, {two: 'two'}];
      
      myarray.forEach(function(item) {
        var items = Object.keys(item);
        items.forEach(function(key) {
         console.log('this is a key-> ' + key + ' & this is its value-> ' + item[key]);
       });
      });

      forEach 接受一个迭代器函数,并且可以选择在调用该迭代器函数时用作this 的值(上面未使用)。为数组中的每个条目调用迭代器函数,按顺序跳过稀疏数组中不存在的条目。虽然

      forEach 的好处是您不必在包含范围内声明索引和值变量,因为它们作为参数提供给迭代函数,因此很好地限定了该迭代。

      如果您担心为每个数组条目进行函数调用的运行时成本,请不要担心; technical details.

      2。使用简单的for

      有时老办法是最好的:

      var myarray = [{one: 'one'}, {two: 'two'}];
      
      for (var i = 0, l = myarray.length; i < l; i++) {
        var items = myarray[i];
        var keys = Object.keys(items);
        for (var j = 0, k = keys.length; j < k; j++) {
          console.log('this is a key-> ' + keys[j] + ' & this is its value-> ' + items[keys[j]]);
        }
      }

      【讨论】:

        【解决方案4】:

        根据你的构造,你可以做

        const arr = [{ key1: 'val1' }, { key2: 'val2' }]
        
        arr.forEach((a, i) =>
          console.log(i, [{ key: Object.keys(a) }, { val: Object.values(a) }])
        )
        

        回答你的问题

        arr.forEach((a, i) =>
          alert("Key is "+ Object.keys(a) + ", value is " +  Object.values(a))
        )
        

        【讨论】:

          【解决方案5】:

          你可以这样做

          const a = [{ one: 'one' }, { two: 'two' }];
          
          a.forEach(function(value,key) {
             console.log(value,key);
          });

          您可以在变量中获取键和值并使用它们。

          【讨论】:

            【解决方案6】:

            我正在尝试获取变量的键或值并打印它。

            那么你可以

            var myarry = [{ one: 'one' }, { two: 'two' }];
            
            for (var key in myarry) {
              var value = myarry[key];
              console.log(key, value)
            }

            【讨论】:

            • 我试过了。我可以在控制台中看到值。但是当我打印时,它仍然显示对象对象。请帮帮我
            【解决方案7】:

            这是一种有趣的方法。

            const arr = [{ one: 'one' }, { two: 'two' }];
            
            Object.entries(arr).forEach(([_, obj]) => {
              const key = Object.keys(obj)[0];
              console.log(`Key is ${key}, value is ${obj[key]}.`);
            });

            【讨论】:

              猜你喜欢
              • 2012-07-18
              • 1970-01-01
              • 2017-09-22
              • 1970-01-01
              • 2017-07-02
              • 2022-11-25
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多