设置数组中对象的属性

时间:2019-03-01 00:13:11

标签: javascript typescript

我有一个对象数组:

[{
   id: 1,
   cod: '123',
   val: true      
},
{
   id: 2,
   cod: '123',
   val: true      
},
{
   id: 3,
   cod: '123',
   val: true      
},
{
   id: 4,
   cod: '456',
   val: true      
},
{
   id: 5,
   cod: '456',
   val: true      
}]

对于具有相同val和具有较高ID的对象,我需要维护true属性cod。例如,我需要以下输出:

[{
   id: 1,
   cod: '123',
   val: false
},
{
   id: 2,
   cod: '123',
   val: false
},
{
   id: 3,
   cod: '123',
   val: true      
},
{
   id: 4,
   cod: '456',
   val: false
},
{
   id: 5,
   cod: '456',
   val: true      
}]

如何更改此数组以获得所需的结果?我应该使用过滤器吗?我有点迷茫。

1 个答案:

答案 0 :(得分:1)

您需要处理和变异数组中的每个元素(假设就地变异是可以的),因此.filter在这里不合适,因为它通常只是“移除”元素。

一种通用方法是:迭代数组的每个元素,并保留一个cod => previous item映射,以跟踪具有相同cod值的前一项。将当前项目的val设置为true,将具有相同val值的上一个项目的cod设置为false,更新当前项目的{值{1}}。

示例:

cod