【问题标题】:How to swap two elements of an array with empties in JavaScript?如何在 JavaScript 中用空交换数组的两个元素?
【发布时间】:2022-01-01 10:09:19
【问题描述】:

我有一个数组,我想交换数组中的两个元素。如果数组非空,我可以简单地做:

const swap = (arr, a, b) => {
    const temp = arr[a]
    arr[a] = arr[b]
    arr[b] = temp
}

并且该函数可以正确交换数组arr中的索引ab的值。

但是,如果数组有一些空元素,例如[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


【解决方案1】:

你确实需要拼接 - 结合 shift 来获得第一项

let arr = [1, , , ,]

console.log(arr)

arr.splice(2, 0, arr.shift());
console.log(arr)

【讨论】:

  • 感谢您的回答,但我已经更新了我的问题。带来不便敬请谅解。我的问题是,即使某些元素为空,我也想交换数组中的两个元素。你知道如何解决这个问题吗?
  • 你的元素不是空的,当用逗号在稀疏数组中创建时它们是未定义的
  • 哦,我明白了。所以控制台中的“空”将与“未定义”完全相同。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-26
  • 1970-01-01
  • 2017-01-30
  • 2016-05-15
  • 2019-07-10
  • 1970-01-01
相关资源
最近更新 更多