javascript - 使用 Chart JS 进行插入排序
问题描述
我想使用 Chart JS 重现算法,我使用 setTimeout 来显示按下按钮提交时数据已更改,但我希望能够显示每一列中数据的交换,换句话说,我想更改在我的插入排序函数中,图表中只有一个值,知道我该怎么做吗?这是我当前的代码:
JS代码
function randomData(quantity) {
let arr = []
while (quantity > 0) {
randomValue = Math.floor(Math.random() * 200);
arr.push(randomValue);
quantity--;
}
return arr;
}
function generateLabelsFromTable(quantity)
{
let labels = [];
iterator = 0;
while (quantity > 0) {
labels.push(iterator)
iterator ++;
quantity --;
}
return labels;
}
function sendData() {
var sortValue = (document.getElementById("sort-method").value);
var quantityValue = document.getElementById("quantityNumbers").value;
myChart.data.labels = generateLabelsFromTable(quantityValue);
myChart.data.datasets.forEach((dataset) => {
dataset.data = (randomData(quantityValue));
});
myChart.update();
switch (sortValue) {
case 'insertionSort':
setTimeout(()=> insertionSort(), 2000)
break;
}
}
function insertionSort() {
var data = myChart.data.datasets[0].data;
var i;
var j;
for (i = 1; i < data.length ; i++)
{
key = data[i];
j = i - 1;
while (j >= 0 && data[j] > key)
{
data[j + 1] = data[j];
j = j - 1;
myChart.update()
}
data[j + 1] = key;
}
console.log(data)
return data;
}
HTML 代码
<canvas id="myChart"></canvas>
<script>
const ctx = document.getElementById('myChart').getContext('2d');
const xlabels = [];
const myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],
datasets: [{
label: 'Data',
data: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)',
'rgba(255, 159, 64, 0.2)'
],
borderColor: [
'rgba(255, 99, 132, 1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)',
'rgba(255, 159, 64, 1)'
],
borderWidth: 1
}]
},
});
</script>
<div class = "main-button">
<button id="submit" type="submit" value="Submit" onclick="sendData()">
Sort
</button>
</div>
解决方案
推荐阅读
- javascript - 将 aria-expanded 设置为 false 的 Javascript
- 如果其他
- 设置为 aria-expanded=true
- sql - postgres 中的大表连接速度非常慢(12 小时以上)
- javascript - 映射 2 个对象数组以进行循环
- unity3d - 如何根据 Unity 中的碰撞点找到旋转?
- linux - MailKit.Net.Smtp.SmtpClient.Send 在 linux 上不起作用
- python - 硬币翻转游戏功能
- javascript - 如何修复打开后关闭的jquery dailog框
- java - Spring Reactive:转换通量
> 到通量 - python - Python 从第一次获取时保存 cookie,在其他请求中使用
- r - 按 R 中的共同值合并