使用jQuery在Angular中使用嵌套的$ each函数和条件填充数组

时间:2016-03-02 19:55:51

标签: javascript jquery arrays angularjs

我有一个json对象,我从角度应用程序中获取get请求。它为我提供了两个主要属性dataincludedincluded对象以某种方式与data对象建立关系。例如,data显示消息,included显示这些消息的发件人。我设法通过检查数据对象中的属性是否与包含的对象中的另一个属性相同来将每条消息与发送方相关联。这是我的代码

$http.get('data.json').then(
  function(jsonAPI) {
    console.log(jsonAPI);
    var dataObj = {};
    var messages = [];

    $.each(jsonAPI.data.data, function(x, data) {
      dataObj[x] = data;
      $.each(jsonAPI.data.included, function(y, included) {
        if (data.relationships.sender.data.id == included.id) {
          dataObj[x].sender = included;
        }
      });
      messages.push(dataObj[x]);
    });

    $scope.newMessages = messages;
  },
  function(errorResponse) {
    // todo handle error.
  }
);   

我创建了一个新数组,其中包含data属性下的所有sender对象和发件人信息。问题是添加了一个名为user_data_template的新关系。我希望以类似的方式将messages数组传递给相应的user_data_template数据。如何更改上面嵌套的$ each函数来实现呢?

这是一个有效的plunker

1 个答案:

答案 0 :(得分:0)

我设法找到了解决方案。我不得不将代码更改为以下内容:

    $.each(jsonAPI.data.data, function(x, data) {
      dataObj[x] = data;
      $.each(jsonAPI.data.included, function(y, included) {
        if(data.relationships.sender.data.id == included.id && included.type == "user") {
          dataObj[x].sender = included;
        }
        if(data.relationships.user_data_template.data !== undefined) {
          if(data.relationships.user_data_template.data.id == included.id && included.type == "user_data_template") {
            dataObj[x].question = included;
          }
        }

      });
      messages.push(dataObj[x]);
    });

新的plunker