【发布时间】:2020-05-14 05:37:41
【问题描述】:
所以基本上我正在构建一个带有反应的视觉排序算法应用程序,我正在实现冒泡排序,总体思路是生成一个从数字 1 到 50 的数组,将其打乱并使用冒泡排序方法对其进行排序。现在的问题是,我希望每次交换两个值时延迟 500 毫秒,以便用户了解算法的工作原理,但 setTimeOut 似乎在 for 循环中不起作用。
function doBubbleSort() {
const animationsArray = document.getElementsByClassName('col-itself');
let arr = this.state.numbers;
console.log(arr);
let len = arr.length;
for (let i = 0; i < len ; i++) {
for(let j = 0 ; j < len - i - 1; j++){
if (arr[j].value > arr[j + 1].value) {
let temp = arr[j].value;
arr[j].value = arr[j+1].value;
arr[j+1].value = temp;
const barOneStyle = animationsArray[j].style;
const barTwoStyle = animationsArray[j+1].style;
const barOneHeight = arr[j].value * 3 + 'px';
const barTwoHeight = arr[j+1].value * 3 + 'px';
const color = '#FF5722';
setTimeout(() => {
barOneStyle.backgroundColor = color;
barOneStyle.height = barOneHeight;
barTwoStyle.backgroundColor = color;
barTwoStyle.height = barTwoHeight;
}, 500);
}
}
}
return arr;}
现在的行为是应用程序等待 500 毫秒,然后立即执行所有代码,因此它在 500 毫秒后从未排序变为完全排序。 我希望你能帮助我。
【问题讨论】:
-
我宁愿存储所有对数组进行排序并使用 setTimeout 显示它们的步骤
标签: javascript reactjs sorting