如何利用数组解构赋值实现不使用中间变量交换数组特定索引值?

2026-05-07 18:520阅读0评论SEO基础
  • 内容介绍
  • 相关推荐

本文共计616个文字,预计阅读时间需要3分钟。

如何利用数组解构赋值实现不使用中间变量交换数组特定索引值?

直接交换数组中两个元素的值,可以使用以下方法:

必须先确保索引有效

解构赋值本身不会校验索引是否越界。若 ij 超出 [0, arr.length) 范围,右侧会取到 undefined,导致交换后出现 undefined 值,但不报错——这容易埋下隐患。

  • 推荐检查方式:i in arr && j in arr(兼容稀疏数组)或 i >= 0 && i < arr.length && j >= 0 && j < arr.length
  • 错误示例:let arr = [1,2]; [arr[0], arr[5]] = [arr[5], arr[0]]; → 结果变成 [undefined, 2]

右侧必须是可迭代值

等号右边必须能生成一个数组(或类数组),不能是 nullundefined,否则抛 TypeError: undefined is not iterable

阅读全文

本文共计616个文字,预计阅读时间需要3分钟。

如何利用数组解构赋值实现不使用中间变量交换数组特定索引值?

直接交换数组中两个元素的值,可以使用以下方法:

必须先确保索引有效

解构赋值本身不会校验索引是否越界。若 ij 超出 [0, arr.length) 范围,右侧会取到 undefined,导致交换后出现 undefined 值,但不报错——这容易埋下隐患。

  • 推荐检查方式:i in arr && j in arr(兼容稀疏数组)或 i >= 0 && i < arr.length && j >= 0 && j < arr.length
  • 错误示例:let arr = [1,2]; [arr[0], arr[5]] = [arr[5], arr[0]]; → 结果变成 [undefined, 2]

右侧必须是可迭代值

等号右边必须能生成一个数组(或类数组),不能是 nullundefined,否则抛 TypeError: undefined is not iterable

阅读全文