Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Remove smallest number in JS Array

I have a number array [2, 1, 3, 4, 5, 1] and want to remove the smallest number in the list. But somehow my IF statement gets skipped.

I checked and by itself "numbers[i + 1]" and "numbers[i]" do work, but "numbers[i + 1] < numbers[i]" doesn't...

function removeSmallest(numbers) {
  var smallestNumberKEY = 0;
  for (i = 0; i <= numbers.lenths; i++) {
    if (numbers[i + 1] < numbers[i]) {
      smallestNumberKEY = i + 1;
    }
  }
  numbers.splice(smallestNumberKEY, 1);
  return numbers;
}

document.write(removeSmallest([2, 1, 3, 4, 5, 1]));
like image 279
Alexey Tseitlin Avatar asked May 14 '16 10:05

Alexey Tseitlin


2 Answers

Short one liner. If the smallest value exist multiple times it will only remove ONE. This may or may not be what you want.

const result = [6,1,3,1].sort().filter((_,i) => i) // result = [1,3,6]

It works by sorting and then creating a new array from the items where indeces are truthy(anything but 0)

like image 50
Esben Skov Pedersen Avatar answered Oct 20 '22 23:10

Esben Skov Pedersen


You can use Array#filter instead

function removeSmallest(arr) {
  var min = Math.min.apply(null, arr);
  return arr.filter((e) => {return e != min});
}

console.log(removeSmallest([2, 1, 3, 4, 5, 1]))
like image 45
Nenad Vracar Avatar answered Oct 20 '22 21:10

Nenad Vracar