【问题标题】:How to iterate an object into an array of Object [duplicate]如何将对象迭代到对象数组中[重复]
【发布时间】:2017-03-15 00:32:50
【问题描述】:

我创建了一个对象,该对象需要传入一个方法,我需要使用每个对象进行迭代。由于我的 Obj 只有值,所以它没有被通过。谁能帮我解决这个问题。

我的代码:

var MyObj = {
    country : "Aus",
    Time : "EST",
    Val : "Pecific"
}

现在这个 MyObj 我需要传入一个方法:

this.someMethod(id, MyObj);

在某些方法中我有一个类似的代码

Ext.Array.forEach(MyObj, function (Value) {})

此时它正在失败,因为MyObj 不是对象数组。如何纠正它。

【问题讨论】:

  • Object.keys(MyObj)
  • 我需要在哪里使用它。

标签: javascript arrays object extjs


【解决方案1】:

如果您能提供更多信息,将会非常有帮助。

我不确定您想要实现什么,但有几种方法可以遍历对象。

如果要将对象拆分为多个单键对象:

> Object.keys(MyObj).map(key => ({ [key]: MyObj[key] }))
[ { country: 'Aus' }, { Time: 'EST' }, { Val: 'Pecific' } ]

另一方面,如果您有一个接受数组的函数,但您只想传递这个对象:

Ext.Array.forEach([MyObj], Value => ())

(但在这种情况下,您最好只调用该函数。)

【讨论】:

    【解决方案2】:

    var MyObj = {
        country : "Aus",
        Time : "EST",
        Val : "Pecific"
    }
    
    //Without ext
    function someMethod(id, MyObj)
    {
      Object.keys(MyObj).forEach(function (Value) {
    console.log(MyObj[Value]);
    });
    }
    
    someMethod(1, MyObj);

    这段代码(vanilla JS)将从带有Object.keys 的对象中获取密钥,并允许您对其进行迭代。适用于对象和数组。

    【讨论】:

      【解决方案3】:

      您可以通过以下方式实现:

      var MyObj = {
          country : "Aus",
          Time : "EST",
          Val : "Pecific"
      }
      
      function someFunction(id, obj){
        var objArray = $.map(obj, function(el) { 
          console.log(el);
          return el 
        });
      }
      someFunction(1, MyObj)
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

      【讨论】:

      • 你为什么要引入像 jQuery 这样的库来做一些可以被 Vanilla JS 处理的事情?
      【解决方案4】:

      ExtJs 方式

      ExtJs 提供Ext.Object.eachValue,这是您正在搜索的内容。
      来自ExtJs documentation

      遍历一个对象并调用给定的回调函数 每次迭代。可以通过在 回调函数。

      以下代码遍历MyObj 的每个值并使用它调用回调。

      var MyObj = {
          country : "Aus",
          Time : "EST",
          Val : "Pecific"
      }
      
      Ext.Object.eachValue(MyObj, function (Value) {console.log(Value)});
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-04
        • 2017-03-17
        • 2017-04-14
        • 1970-01-01
        • 1970-01-01
        • 2013-01-03
        • 2014-04-16
        • 1970-01-01
        相关资源
        最近更新 更多