Javascript 更新数组中的多个对象

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

我想使用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;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]
??