Tell us what’s happening:
Hello, World!
Test 18 keeps sending error, I know that the problem is within the selecting criteria, but it seems to condition the prompt just fine. I’ll list my code below and after it, an additional sub-code that did not do what it was supposed to when added, while was hoped to fix it. If anyone knows the issue, would appreciate their efforts.
Your code so far
let currentArray = [];
function generateElement() {
return Math.floor(Math.random() * 100) + 1;
}
function generateArray() {
const arr = [];
for (let i = 0; i < 5; i++) {
arr.push(generateElement());
}
return arr;
}
function generateContainer() {
return document.createElement("div");
}
function fillArrContainer(container, arr) {
container.innerHTML = ""; // Clear existing content
arr.forEach(num => {
const span = document.createElement("span");
span.textContent = num;
container.appendChild(span);
});
}
function isOrdered(a, b) {
return a <= b;
}
function swapElements(arr, index) {
if (!isOrdered(arr[index], arr[index + 1])) {
const temp = arr[index];
arr[index] = arr[index + 1];
arr[index + 1] = temp;
}
}
function highlightCurrentEls(container, index) {
const children = container.children;
if (index < children.length) {
children[index].style.border = "2px dashed red";
}
if (index + 1 < children.length) {
children[index + 1].style.border = "2px dashed red";
}
}
document.getElementById("generate-btn").addEventListener("click", function () {
const arrayContainer = document.getElementById("array-container");
arrayContainer.innerHTML = "";
const startingArrayDiv = document.createElement("div");
startingArrayDiv.id = "starting-array";
arrayContainer.appendChild(startingArrayDiv);
currentArray = generateArray();
fillArrContainer(startingArrayDiv, currentArray);
});
document.getElementById("sort-btn").addEventListener("click", function () {
if (currentArray.length === 0) return;
const arrayContainer = document.getElementById("array-container");
const startingArrayDiv = document.getElementById("starting-array");
fillArrContainer(startingArrayDiv, currentArray);
highlightCurrentEls(startingArrayDiv, 0);
let arr = currentArray.slice();
const n = arr.length;
let comparisonCount = 0; // total comparisons performed
for (let i = 0; i < n - 1; i++) {
for (let j = 0; j < n - i - 1; j++) {
comparisonCount++;
if (comparisonCount === 1) {
if (!isOrdered(arr[j], arr[j + 1])) {
swapElements(arr, j);
}
}
else {
const stepContainer = generateContainer();
fillArrContainer(stepContainer, arr);
highlightCurrentEls(stepContainer, j);
arrayContainer.appendChild(stepContainer);
if (!isOrdered(arr[j], arr[j + 1])) {
swapElements(arr, j);
}
}
}
}
const finalContainer = generateContainer();
fillArrContainer(finalContainer, arr);
arrayContainer.appendChild(finalContainer);
});
//THAT'S THE CODE
//NOW THIS IS THE SUB-CODE I TRIED WITH BUT STILL DIDN'T //WORK, MAYBE THE PROBLEM IS WITH HOW THE RESULT OF //FREECODECAMP IS DESIGNED TO WORK!
//SUB-CODE:
if(!arr[j+3]) {
if(!isOrdered(arr[j+1], arr[j+2]){
swapElements(arr,j)
}
}
Your browser information:
User Agent is: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36
Challenge Information:
Build a Sorting Visualizer - Build a Sorting Visualizer