我创建了一个对象,我需要在一个方法中传递该对象,我需要使用每个对象进行迭代。因为我的Obj只有价值所以它没有通过。任何人都可以帮助我。
我的代码:
var MyObj = {
country : "Aus",
Time : "EST",
Val : "Pecific"
}
现在这个MyObj我需要传递一种方法:
this.someMethod(id, MyObj);
在someMethod中我有一个像
这样的代码Ext.Array.forEach(MyObj, function (Value) {})
此时它失败了,因为MyObj
不是对象数组。如何纠正它。
答案 0 :(得分:4)
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;