Javascript 更新数组中的多个对象
我想使用typescript对数组进行批量更新 我使用for循环来实现它Javascript 更新数组中的多个对象,javascript,arrays,angular,typescript,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(设i=0
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(设i=0;i
您可以使用ES6的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]);
如果(找到){
el=对象分配(el,已找到);
}
返回el;
});
console.log(版本)代码>您可以使用ES6的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]);
如果(找到){
el=对象分配(el,已找到);
}
返回el;
});
console.log(版本)代码>潜在复杂问题的简单解决方案
$scope.model.ticketsArr.forEach(function (Ticket) {
if (Ticket.AppointmentType == 'CRASH_TECH_SUPPORT') {
Ticket.AppointmentType = '360_SUPPORT'
}
});
潜在复杂问题的简单解决方案
$scope.model.ticketsArr.forEach(function (Ticket) {
if (Ticket.AppointmentType == 'CRASH_TECH_SUPPORT') {
Ticket.AppointmentType = '360_SUPPORT'
}
});
那么...怎么样它有7个答案。这与使用findIndex或filter进行多次删除有关。但这需要使用map或其他方法进行多次更新。所以我问了另外一个问题。好吧,公平地说,您当前的代码实际上并没有修改原始对象。相反,它将用selectedVersions
中的新对象完全替换原始对象。这是您想要保留的功能吗?更新和替换之间有很大的区别,例如您有{id:0,a:2,b:3}
。使用{id:0,a:3}
更新将导致{id:0,a:3,b:3}
,而替换将导致{id:0,a:3}
。这又如何呢?它有7个答案。这与使用findIndex或filter进行多次删除有关。但这需要使用map或其他方法进行多次更新。所以我问了另外一个问题。好吧,公平地说,您当前的代码实际上并没有修改原始对象。相反,它将用selectedVersions
中的新对象完全替换原始对象。这是您想要保留的功能吗?更新和替换之间有很大的区别,例如您有{id:0,a:2,b:3}
。使用{id:0,a:3}
进行更新将导致{id:0,a:3,b:3}
,而替换将导致{id:0,a:3}
。在该解决方案中,用于比较的键硬编码为id
,而OP会在当前代码中动态设置它。我键入的确切内容是什么。我想使用key而不是id来创建它。因为我会将此方法用作常用方法。:)因此,我认为我需要将s.id===el.id
更改为s[key]===el[key]
?在这个解决方案中,用于比较的键被硬编码为id
,而OP在当前代码中动态地设置它。我想使用key而不是id来创建它。因为我会将此方法用作常用方法。:)所以我想我需要把s.id==el.id
改成s[key]==el[key]
??