Friday, May 10, 2024
 Popular · Latest · Hot · Upcoming
29
rated 0 times [  32] [ 3]  / answers: 1 / hits: 37122  / 10 Years ago, wed, november 12, 2014, 12:00:00

I've been working on a program that uses a quick sort algorithm to sort an array of numbers. This is my code:



    var myArray=[8,2,5,6];

function quickSort(myArray)
{
if (myArray.length === 0){
return [];
}

var left=[];
var right=[];
var pivot= myArray[0];

for (var i=1; i<myArray.length; i++){

if (myArray[i]<pivot) {
left.push(myArray[i]);

}

else {

right.push(myArray[i]);
}
}

return quickSort(left).concat(pivot, quickSort(right));
document.getElementById().innerHTML = quickSort(left).concat(pivot, quickSort(right));
}


And here is my html



<html>
<h1>QuickSorter</h1>
<button onclick=quicksort()>Quick Sort It!</button>
<script src=quicksort.js> </script>
</html>


The console in safari keeps showing me this :



TypeError: undefined is not an object (evaluating myArray.length)


I really don't understand at all why it isn't working. Any help would be appreciated.


More From » html

 Answers
11

If you are calling the function with



quicksort()


you are not passing any arguments in. However, your function starts with



function quickSort(myArray)
{
if (myArray.length === 0){
return [];
}


Since no arguments are passed to quicksort, myArray is left undefined. Undefined variables are not objects, and therefore can not have properties such as length.



EDIT:



In order to call your function when you click the button, it is best to set the event listener in javascript rather than putting it in your HTML.



Give you button an ID name and remove the onclick attribute:



<button id=sortButton>Quick Sort It!</button>


Then add the event listener in your JavaScript after your quickSort definition:



document.getElementById(sortButton).onclick = function(){quickSort(myArray);});

[#68825] Monday, November 10, 2014, 10 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
miles

Total Points: 256
Total Questions: 111
Total Answers: 104

Location: Benin
Member since Fri, Mar 24, 2023
1 Year ago
;