如何解决如何可扩展地解决这个数组操作问题?
我正在使用 JS 并遇到一个有趣的数组操作问题。我知道这个问题可以用一个巨大的 if - else if 子句来解决,但实际上我正在寻找一个更具可扩展性的答案。
我有两个数组(我们称它们为 input 和 output),它们的内容彼此相关。第一个数组包含一个 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 部分可以是任何内容,而不仅仅是我在此处提供的文本。
提前致谢!
解决方法
map 函数允许我们从预先存在的数组创建新数组。
const outputArray = inputArray.map(id => {
return {
id: id,data: "Some data for id " + id
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。