【发布时间】:2022-01-01 10:09:19
【问题描述】:
我有一个数组,我想交换数组中的两个元素。如果数组非空,我可以简单地做:
const swap = (arr, a, b) => {
const temp = arr[a]
arr[a] = arr[b]
arr[b] = temp
}
并且该函数可以正确交换数组arr中的索引a和b的值。
但是,如果数组有一些空元素,例如[1, , , ,],那么swap的结果将是[undefined, empty, 1, empty],而预期的结果应该是[empty × 2, 1, empty]。那么如何修改swap 函数才能使结果正确。或者有什么方法可以使数组中的特定索引为空?
同样失败:
const swap = (arr, a, b) => {
const temp = arr[a]
arr.splice(a, 1, arr[b])
arr.splice(b, 1, temp)
}
原来的问题:
我有一个长度为 4 的数组 let arr = [1, , , ,](它将在控制台中显示 [1, empty × 3]),我想将第一个元素移动到第三个元素,即:[empty × 2, 1, empty]。我如何做到这一点?
我尝试过splice 并直接为数组赋值,但它们不起作用。
【问题讨论】:
-
请访问help center,使用tour查看内容和How to Ask。做一些研究,搜索关于SO的相关主题;如果您遇到困难,请发布您尝试的minimal reproducible example,注意输入和预期输出,最好在Stacksnippet
-
“将不起作用”不是一个足够精确的错误描述,我们无法帮助您。 什么不起作用? 如何不起作用?你的代码有什么问题?您收到错误消息吗?错误信息是什么?你得到的结果不是你期望的结果吗?你期望什么结果,为什么,你得到的结果是什么,两者有什么不同?您正在观察的行为不是期望的行为吗?期望的行为是什么,为什么,观察到的行为是什么,它们有何不同?
标签: javascript arrays indexing swap splice