我有一个数字数组[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)
您的代码中有错字,数组没有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)
你可以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)