如何将对象迭代到Object数组中

时间:2017-03-14 10:32:35

标签: javascript arrays object extjs

我创建了一个对象,我需要在一个方法中传递该对象,我需要使用每个对象进行迭代。因为我的Obj只有价值所以它没有通过。任何人都可以帮助我。

我的代码:

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

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

this.someMethod(id, MyObj);

在someMethod中我有一个像

这样的代码
Ext.Array.forEach(MyObj, function (Value) {})

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

4 个答案:

答案 0 :(得分:4)

ExtJs方式

ExtJs提供Ext.Object.eachValue这就是你要搜索的内容 来自ExtJs documentation

  

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

以下代码会对MyObj的每个值进行检查,并使用它调用回调。

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

Ext.Object.eachValue(MyObj, function (Value) {console.log(Value)});

答案 1 :(得分:3)

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

我不确定你想要实现什么,但有几种方法可以迭代对象。

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

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

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

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

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

答案 2 :(得分:3)

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从Object获取密钥,并允许您迭代它。适用于对象和数组。

答案 3 :(得分: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>
&#13;
&#13;
&#13;