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

时间:2015-03-15 08:31:55

标签: javascript extjs extjs5

我有一个对象,我想执行添加/删除/查找操作。所以我只是尝试使用Ext.util.Collection / Ext.util.MixedCollection / Ext.util.HashMap类将该Object转换为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;
}

谢谢!

2 个答案:

答案 0 :(得分:2)

如果简直就是你所要的,那么你真的需要一个单独的效用 - 至少是小规模的:

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

答案 1 :(得分:1)

没有内置方法。您可以添加到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});