【问题标题】:Push new property to the current object inside a loop将新属性推送到循环内的当前对象
【发布时间】:2017-03-08 14:10:51
【问题描述】:

在我的脚本中,我使用异步 get 来获取我的对象的数据。

这是脚本:

self.organizations = [];

Service.get(self.orgId).then(function (org) {
    self.organizations.push({
        Organization: org,
        Role: "User"
    });

    Service.getGroups().then(function (result) {
        _.forEach(result.Objects, function (res) {
            if (res.org.Id === self.orgId) {
                self.organizations.Groups = res.Groups;
            }
        });
    });
});

首先我获取组织的数据。然后在这个承诺中,我检索所有组,如果一个组作为相同的组织 ID,则表示组和组织已绑定。

res.Groups 模型示例:

res.Groups = [
    {Id: 1, Name: "Group Name 1"},
    {Id: 2, Name: "Group Name 2"}
];

由于没有显示其他功能,我不能使用任何其他功能“架构”。

然后我想将其组添加到 self.organizations 数组中,在当前组织的索引处。但是这里的结果是我得到了:

self.organizations = [
    {Organization: "First Organization", Role: "User"},
    {Organization: "Second Organization", Role: "User"},
    Groups: [
        {Id: 1, Name: "Group Name 1"},
        {Id: 2, Name: "Group Name 2"}
        {Id: 3, Name: "Group Name 3"}
    ]
];

而我的期望:

self.organizations = [
    {
        Organization: "First Organization",
        Role: "User",
        Groups: [
            {Id: 1, Name: "Group Name 1"},
            {Id: 1, Name: "Group Name 2"}
        ]
    },
    {
        Organization: "Second Organization",
        Role: "User",
        Groups: [
            {Id: 3, Name: "Group Name 3"}
        ]
    }
];

我不知道如何在当前组织内推送 res.Groups(当前的第一个承诺迭代)。我知道我的结构可能不合适,但我很难找到一个合适的工作。

【问题讨论】:

    标签: javascript arrays loops object


    【解决方案1】:

    您可以先将Groups 添加到当前对象,然后将其推送到集合中:

    self.organizations = [];
    
    Service.get(self.orgId).then(function (org) {
        var item = {
            Organization: org,
            Role: "User"
        }
    
        Service.getGroups().then(function (result) {
            _.forEach(result.Objects, function (res) {
                if (res.org.Id === self.orgId) {
                    item.Groups = res.Groups;
                }
            });
    
            self.organizations.push(item);
        });
    });
    

    【讨论】:

      猜你喜欢
      • 2019-06-20
      • 2021-06-14
      • 1970-01-01
      • 2013-06-12
      • 2017-02-02
      • 1970-01-01
      • 2014-11-12
      • 2017-01-22
      • 2012-10-03
      相关资源
      最近更新 更多