Big to Small List Sorting

Big to Small List Sorting
0.0 0

#1

I wanted to return the largest number at integer[0]

list1= [4,6,2,1,9,63,-134,566]


var max = function(list)
{
 var bigToSmallList=[] //makin an empty list to return the biggest value at position 0
 list.sort() // sorting it into numerical order small to big
 
 
 for(i=list.length;i<list.length;i--) //want to iterate from the end to the start 
 {
    bigToSmallList.push(list[i])//adding next largest to list
    console.log(bigToSmallList) //just checking what's up 
 }


 return bigToSmallList[0]; //should return the biggest value at position 0
}

max(list1)

Seems to just return undefined?


#2

Using sort without any argument only sorts the elements as if they are strings instead of numbers. You need to add a compare function to sort numbers as you are wanting. Take a look at the sort documentation for examples of how to accomplish this.

Also, your for loop condition above is not correct. Take your example array of [4,6,2,1,9,63,-134,566]. It has a length of 8, that means i starts at the value 8. The condition which allows the for loop to keep iterating starts by checking if 8 is less than 8. This evaluates to false, so the for loop never starts and bigToSmallList never gets any values added to it. So, when you try to reference bigToSmallList[0] in your return statement, you return undefined, because there is not item in the first index (0).


#3

var min = function(list){
    
    return Math.min.apply(null, list)
}

This works

var min = function(list){
    
    return Math.min(null, list)
}

This doesnt

var min = function(list){
    
    return Math.min(list)
}

Messing about with the Math.min and max methods and not sure why it doesnt work

what does the apply and null do and why is it necessary?


#4

Math.min() takes single values as arguments.
list is an array and not a single value.
You can spread the array.


#5

how do you spread an array or list?


#6

In ES6 you can spread an array using the spread operator: …array

Example:

let arr = [1, 2, 3]
let arr2 = [...arr, 4, 5]
console.log(arr2) // returns [1, 2, 3, 4, 5]

For your use case, you could use return Math.min(...list);