我有一个对象数组:
[{
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
}]
如何更改此数组以获得所需的结果?我应该使用过滤器吗?我有点迷茫。
答案 0 :(得分:1)
您需要处理和变异数组中的每个元素(假设就地变异是可以的),因此.filter
在这里不合适,因为它通常只是“移除”元素。
一种通用方法是:迭代数组的每个元素,并保留一个cod => previous item
映射,以跟踪具有相同cod
值的前一项。将当前项目的val
设置为true
,将具有相同val
值的上一个项目的cod
设置为false
,更新当前项目的{值{1}}。
示例:
cod