使用调用Angular / JavaScript * array.push(function(parameter))*中的函数的array.push时,修改数组中推送的对象

时间:2017-02-28 06:48:25

标签: javascript angularjs arrays

当在数组的push方法中使用函数时,我如何追加推入数组的对象(我希望我正确地写出来)?

我有以下方法在profile.id和keywordId之间找到匹配项,然后将匹配的kewordId推送到数组中。 如何附加此推送方法以返回修改后的对象,而不仅仅是关键字Id?

我想将以下内容推入数组:

array.push({ id: profile.id, keyID: keywordID, name: profile.name });

但我不知道如何附加此行来启用此功能:

array.push(findKeywordProfile(profile.id));

这是我创建数组的方法:

function getKeywordProfiles(brandProfilesArray) {
  var array = [];
  brandProfilesArray.forEach(function (profile) {
      array.push(findKeywordProfile(profile.id));
  })
  return $q.all(array);
}

这是在array.push函数中调用的方法:

function findKeywordProfile(brandProfileID) {
  var keywordProfileID = $q.defer();
  pullSocialMediaData('list_keyword_profiles.json').then(function (data) {
      var keywordProfileInstance = data.filter(function (keyword) {
          return keyword.brand_profile_id === brandProfileID;
      });
      keywordProfileID.resolve(keywordProfileInstance[0].id);
  });
  return keywordProfileID.promise;
}

谢谢!

3 个答案:

答案 0 :(得分:0)

您应该在函数keywordProfileID

中传递整个对象

类似的东西,

```

function findKeywordProfile(brandProfileID) {
  var keywordProfileID = $q.defer();
  pullSocialMediaData('list_keyword_profiles.json').then(function (data) {
      var keywordProfileInstance = data.filter(function (keyword) {
          return keyword.brand_profile_id === brandProfileID;
      });
      keywordProfileID.resolve({id: keywordProfileInstance[0].id, name: keywordProfileInstance[0].id, keyID: keyword});
  });
  return keywordProfileID.promise;
}

```

答案 1 :(得分:0)

您可以从keywordProfileInstance[0]的属性创建对象,将对象传递给resolve()

let {id, keywordID, name} = keywordProfileInstance[0];
keywordProfileID.resolve({id, keyID:keywordID, name});

答案 2 :(得分:0)

你应该试试这个。希望它能起作用

function getKeywordProfiles(brandProfilesArray) {
  var array = [];
  brandProfilesArray.forEach(function (profile) {
      var data = findKeywordProfile(profile.id); 
      array.push(data);
  })
  return $q.all(array);
}