【发布时间】:2019-09-01 16:35:30
【问题描述】:
我有以下对象数组:
[
{id: 1, updatedVersion: 7},
{id: 2, updatedVersion: 0},
{id: 7, updatedVersion: 9},
{id: 10, updatedVersion: 11},
{id: 9, updatedVersion: 0},
{id: 11, updatedVersion: 0},
]
updatedVersion 为零的为最新版本。
从该数组中,我能够过滤出最新版本并且至少有一个先前版本的数组, 它们是 id 9 和 11 的对象。(id === 2 的对象不包括在内,因为它是最新版本但没有以前的版本)。
我现在需要的是在这两个 id 为 9 和 11 的对象中创建一个额外的属性(同样:最新版本的对象并且至少有一个以前的版本), 称为 versionHistory,它将是该对象以前版本的有序数组,从最新到最旧。
所以它看起来像这样:
[
{ id: 9,
updatedVersion: 0,
versionHistory: [
{id: 7, updatedVersion: 9},
{id: 1, updatedVersion 7}
]
},
{
id: 11,
updatedVersion: 0,
versionHistory: [
{id: 10, updatedVersion: 11}
]
}
]
我想出了一个丑陋的解决方案,其中涉及嵌套的 for 循环,但我正在寻找使用 map、filter 和 reduce 的更优雅的解决方案。我将不胜感激有关如何解决此问题的任何提示。
【问题讨论】:
标签: javascript arrays