删除JS Array中的最小数字

Ale*_*lin 9 javascript arrays

我有一个数字数组[2,1,3,4,5,1],并希望删除列表中的最小数字.但不知何故,我的IF语句被忽略了.

我检查并自己"数字[i + 1]"和"数字[i]"工作,但"数字[i + 1] <数字[i]"不...

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]));
Run Code Online (Sandbox Code Playgroud)

isv*_*all 5

您的代码中有错字,数组没有lenths属性

function removeSmallest(numbers) {
  var smallestNumberKEY = 0;
  for (var i = 0; i < numbers.length - 1; 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]));
Run Code Online (Sandbox Code Playgroud)

但是您的算法不适用于其他数组,例如[5, 3, 1, 4, 1],它将删除一个值3

您可以使用Math.min函数找到最小值,然后过滤数组

function removeSmallest(arr) {
    var min = Math.min(...arr);
    return arr.filter(e => e != min);
}
Run Code Online (Sandbox Code Playgroud)


Nen*_*car 4

你可以Array#filter使用

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]))
Run Code Online (Sandbox Code Playgroud)

  • **警告**:`O(n^2)` (3认同)