如何将对象数组转换为模型对象数组

Posted

技术标签:

【中文标题】如何将对象数组转换为模型对象数组【英文标题】:How to convert array of object to array of model object 【发布时间】:2017-08-14 16:52:56 【问题描述】:

I have a model defined as BUS having fields tyre (string), color(string) , company(string)。在主面板中尝试通过 ajax 读取数据,其他通过一些 web 服务调用读取数据。这两者都需要显示在同一个 GRID 上。

在商店中,我正在创建一个记录数组,其中包含两个数组,一个由 ajax 调用准备,另一个由 web 服务数据准备。我调用一个方法并从 web 服务获取数据并将其推送到主记录数组有数据但存储的对象类型不同。

当使用 chrome 开发工具进行检查时,在我看来,从 ajax 准备的一个等同于模型,而另一个只是具有一些字段的对象。下面有 model:function,它指向定义的模型。

data:Object > this have values exactly like my webservice array object.
dirty:false
editing:false
events:Object
id:"travel.data.model.BUS-ext-record-1613"
index:2
internalId:"ext-record-1613"
modified:Object
phantom:true
raw:Object
store:m

我从 webservice 获得的对象就像数组中的普通对象,我基本上是在组合并尝试在 GRID 上显示,但 GRID 仅显示上述类型的对象。

data : Object > see this object does not have those other properties
tyre: "eight"
color: "blue"

在推入主数组之前是否需要将其转换为模型类型?

【问题讨论】:

简单来说,如何将我的对象数组映射到模型对象数组并最终添加到我的商店 有人可以帮忙吗? store.loadFromRaw ? 【参考方案1】:

您可以遍历普通对象数组并使用 Ext.create() 使用普通对象中的数据创建模型记录。

有点像这样。

var modelObjectArray = [];

Ext.Array.each(normalObjectArray, function(normalObject, index, normalObjectArrayItSelf) 
    var modelObject = Ext.create('Complete.Model.Name', normalObject);
    modelObjectArray.push(modelObject);
);

这样你会得到一个模型记录的对象数组

【讨论】:

假设我现在在函数中有一个普通对象 NorObj 数组(normalObject > 我应该使用什么?这是类型吗? @NeverGiveUp161 我所说的 normalObject 是指普通的 javascript 对象。例如; var obj = 轮胎:“八”,颜色:“蓝色”;你可以给它起任何你喜欢的名字。 好的,我已经调整了迭代部分。我不知道的是 Ext.create('Complete.Model.Name', normalObject);它有帮助。我面临的唯一问题是模型记录里面有数据,而使用 Ext.create 创建的记录里面有一个数据对象,而这个数据对象又包含模型对象的所有字段 + 另一个数据对象有实际值。 我希望它是转换后的模型对象应该有一个数据对象,该数据对象应该将数据映射到模型字段,而不是像我的模型字段,它在另一个具有所有值的数据对象中具有数据对象连同模型字段。感谢您的帮助 如果您要映射到模型的实际数据在数据字段中,那么您可以尝试将 normalObject.data 而不是 normalObject 传递给 create 方法。这将切断数据对象的下一级。

以上是关于如何将对象数组转换为模型对象数组的主要内容,如果未能解决你的问题,请参考以下文章

如何以角度将 JSON 对象数组转换为 Observable 数组

如何将 laravel 模型工厂创建方法返回的对象转换为包含模型字段的数组?

Laravel 集合将数组转换为对象

Rails:如何将对象数组的哈希转换为 json

将模型类的 Doctrine_Collection 转换为简单对象数组的简单方法?

如何将带有数组的对象转换为数组