3 回答
TA贡献1807条经验 获得超9个赞
这三行交换了由 和 索引的元素。i
i+1
你不能只写
array[i] = array[i+1]; array[i+1] = array[i];
交换元素,因为在此版本中,在执行第一行后,原始值 丢失,因为它已被值 覆盖。array[i]
array[i+1]
要解决此问题,可以将该值存储在临时变量(此处调用)中,以便以后可以将其分配给 。array[i]
temp
array[i+1]
TA贡献1936条经验 获得超6个赞
它正在交换数组中当前和下一个元素的值。
像这样的事情的问题
1. array[i] = array[i+1];
2. array[i+1] = array[i]
在第一次赋值中,您用 array[i+1] 覆盖 array[i] 的常规值,以便您在第二行中分配相同的 array[i+1] 值,因此您使用 temp 变量来存储 array[i] 的原始值,使其在第 1 行的赋值之后具有此值
1 let temp = array[i];
2 array[i] = array[i+1];
3 array[i+1] = temp;
在第一行中,您基本上存储了 array[i] 的原始值,以便稍后使用它来重新组合 array[i+1]
TA贡献1872条经验 获得超3个赞
如果要在数组中的某个位置放置一个新值,则该位置的旧值将被覆盖。
const arr = [0, 1, 3, 2]
我们将使用这个数组作为示例。如果我想交换 和 的值,我可以从设置结果开始,结果如下。您会注意到该值现在丢失了!arr[2]arr[3]arr[2] = arr[3]3
const arr = [0, 1, 2, 2]
这就是创建变量的原因。临时存储将被覆盖的值。下面是索引 2 的示例:temp
// array = [0, 1, 3, 2]
let temp = array[2];
// temp = 3
// array = [0, 1, 3, 2]
array[2] = array[2+1];
// temp = 3
// array = [0, 1, 2, 2]
array[2+1] = temp;
// array = [0, 1, 2, 3]
添加回答
举报