微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何可扩展地解决这个数组操作问题?

如何解决如何可扩展地解决这个数组操作问题?

我正在使用 JS 并遇到一个有趣的数组操作问题。我知道这个问题可以用一个巨大的 if - else if 子句来解决,但实际上我正在寻找一个更具可扩展性的答案。

我有两个数组(我们称它们为 inputoutput),它们的内容彼此相关。第一个数组包含一个 id 列表,第二个数组实际上是来自与输入数组的 id 匹配的 API(我无法控制 API)的响应。


示例:如果我有一个 [1,2,3] 的输入数组,我最终会得到一个

输出数组
[
  { id: 1,data: "Some data for id 1" },{ id: 2,data: "Some data for id 2" },{ id: 3,data: "Some data for id 3" }
]

到目前为止一切顺利。但是,如果我有一个[1,2] 这样的输入数组,那么问题就会出现,这是可能的并且是有意的。在这种情况下,我以

输出数组结束
[
  { id: 1,data: "Some data for id 2" }
]

在上述情况下,我需要将输出数组设为 length === 3,第三项是第二项的副本,就像这样

[
  { id: 1,data: "Some data for id 2" }
]

为了清楚起见,再举两个例子: 输入:[4,4,4],我得到了什么:

[
  { id: 4,data: "Some data for id 4" }
]

我需要实现的目标:

[
  { id: 4,data: "Some data for id 4" },{ id: 4,data: "Some data for id 4" }
]

最后一个,输入:[3,3,7] 我得到了什么:

[
  { id: 3,data: "Some data for id 3" },{ id: 7,data: "Some data for id 7" }
]

我需要实现的目标:

[
  { id: 3,data: "Some data for id 7" },]

我使用的最大数组长度为三个,因此比较长度和值的 if-else 子句就足够了,但是是否有一种动态且可扩展的方式来操作输出数组预期的方式?我无法从我的脑海中思考任何事情。

编辑:我应该补充一点,data 部分可以是任何内容,而不仅仅是我在此处提供的文本。

提前致谢!

解决方法

ma​​p 函数允许我们从预先存在的数组创建新数组。

const outputArray = inputArray.map(id => {
    return {
        id: id,data: "Some data for id " + id
    }
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。