我试着解决代码战的编码难题。我的解决方案通过了所有测试,但其中一项测试如下:
应该是纯的,即不对原始数组进行变异,您的函数不应该对输入数组进行变异:期望[ 2, 5, 5, 7, 7, 10, 10, 10, 10, 10 ]与[ 2, 5, 3, 7, 1, 10, 4, 6, 8, 9 ]完全相等。
这是我对挑战的解决方案: Bubblesort一次
function bubblesortOnce(a) {
let newArr = [];
for (let i = 0; i < a.length; i++) {
if (a[i] > a[i + 1]) {
newArr[i] = a[i + 1];
a[i + 1] = a[i];
} else {
newArr[i] = a[i];
}
}
return newArr;
}
有人能帮我吗?
发布于 2022-08-22 21:39:04
函数不应更改输入数组。
输入数组是传递到函数中的数组。
突变是另一个用来改变事物价值的词。
要停止更改输入数组,我们可以使用扩展算子 (.)将输入数组的每个元素复制到一个新数组中,然后更改该新数组:
下面的代码片段使用了一个新的"passedArray“输入,然后将该输入与扩展操作符复制到一个新的数组中:
function bubblesortOnce(passedArray) {
let a = [...passedArray]; //copy the array
let newArr = [];
for (let i = 0; i < a.length; i++) {
if (a[i] > a[i + 1]) {
newArr[i] = a[i + 1];
a[i + 1] = a[i];
} else {
newArr[i] = a[i];
}
}
return newArr;
}
https://stackoverflow.com/questions/73451213
复制相似问题