更新数组中的多个对象

时间:2017-10-24 14:46:28

标签: javascript arrays angular typescript

我想使用typescript对数组进行批量更新。

我是通过使用for循环来完成的。

this.versions = [{ id: 1, VersionName: 'test1' }, { id: 2, VersionName: 'test2' }, { id: 3, VersionName: 'test3' }, { id: 4, VersionName: 'test4' }];
this.selectedVersions = [{ id: 2, VersionName: 'test2' }, { id: 3, VersionName: 'test3' }];
for (let i = 0; i < this.selectedVersions.length; i++) {
  this.versions = this._configuration.updateEveryObjectsByKey(this.versions, this.selectedVersions[i], "Id");
}

updateEveryObjectsByKey(listOfdata: any, data: any, key: string) {
  listOfdata = listOfdata.map(function (item) {
    return item[key] == data[key] ? data : item;
  })
  return listOfdata;
}

但我不喜欢使用for循环。那么让我知道如何使用typescript进行批量更新到数组?

2 个答案:

答案 0 :(得分:5)

您可以使用ES6&#39> Object.assign array.find array.map

&#13;
&#13;
var versions = [{ id: 1, VersionName: 'test1' }, { id: 2, VersionName: 'test2' }, { id: 3, VersionName: 'test3' }, { id: 4, VersionName: 'test4' }];
var selectedVersions = [{ id: 2, VersionName: 'test2 update' }, { id: 3, VersionName: 'test3' }];
var key = "id";
versions = versions.map(el => {
  var found = selectedVersions.find(s => s[key] === el[key]);
  if (found) {
      el = Object.assign(el, found);
  }
  return el;
});
console.log(versions);
&#13;
&#13;
&#13;

答案 1 :(得分:1)

对潜在复杂问题的简单解决方案。

           $scope.model.ticketsArr.forEach(function (Ticket) {
                if (Ticket.AppointmentType == 'CRASH_TECH_SUPPORT') {
                    Ticket.AppointmentType = '360_SUPPORT'

                }
            });