ExtJS 5 - 如何将对象转换为 Collection/MixedCollection/HashMap?

ExtJS 5 - How to convert Object to Collection/MixedCollection/HashMap?

我有一个对象,我想对其执行 add/remove/find 操作。所以我只是尝试使用 Ext.util.Collection/Ext.util.MixedCollection/Ext.util.HashMap [=34= 将该对象转换为 HashMap/Collection 对象].因为它已经是一个对象我只想执行类型转换?在 ExtJS 中是否有一个直接的选项可以实现这一点?

我目前正在使用以下实用方法来实现这一点。除了这个还有其他更好的选择吗?

原始对象:-

  Object {abbreviateValues: true, category: "P", charCode: 13092,charDescription: Array[5], charId: 13092…}

实用方法:-

convertObjectToCollection: function(rawObject){
  var hashMapObject = Ext.create('Ext.util.HashMap'); 
    for(var key in rawObject) {
      hashMapObject.add(key,rawObject[key]);
    } 
  return hashMapObject;
}

谢谢!

没有内置方法。您可以添加到 HashMap 以使其更干净:

Ext.require('Ext.util.HashMap', function() {
    Ext.util.HashMap.fromObject = function(o) {
        var map = new Ext.util.HashMap(),
            key;

        for (key in o) {
            map.add(key, o[key]);
        } 
        return map;
    }
});

Ext.util.HashMap.fromObject({foo: 1, bar: 2});

在您真的不需要单独的实用程序之后,简洁就是您的全部 - 至少在小范围内:

var obj = { foo: 1, bar: 2, baz: 3 },
    map = Ext.create('Ext.util.HashMap');
Ext.iterate(obj, map.add, map);