我想使用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进行批量更新到数组?
答案 0 :(得分:5)
您可以使用ES6&#39> Object.assign , array.find 和 array.map :
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;
答案 1 :(得分:1)
对潜在复杂问题的简单解决方案。
$scope.model.ticketsArr.forEach(function (Ticket) {
if (Ticket.AppointmentType == 'CRASH_TECH_SUPPORT') {
Ticket.AppointmentType = '360_SUPPORT'
}
});