只删除一个数组中的最小值。JS

这是任务。给定一个整数数组,删除最小值。不要改变原始数组/列表。如果有多个具有相同值的元素,则删除具有较低索引的元素。如果您得到一个空数组/列表,则返回一个空数组/列表。不要更改剩余元素的顺序。


这是删除所有最小值的代码。


function smallest(arr) {

  return arr.filter((it) => it !== Math.min.apply(null, arr)) 

}

这是保留所有重复项的代码。


const aa = arr.filter((it,index) => arr.indexOf(it) !== index)

我想以某种方式将它们结合起来以获得结果,但仍然无法做到。是否可以或需要使用其他方式?也许你知道如何用reduce解决它?


烙印99
浏览 239回答 3
3回答

慕容708150

找到最小的,找到它的索引,过滤掉该索引中的项目:function removeSmallest(arr) {  const smallest = Math.min(...arr);  const index = arr.indexOf(smallest);    return arr.filter((_, i) => i !== index);}const result = removeSmallest([2, 1, 5, -10, 4, -10, 2])console.log(result)

饮歌长啸

使用indexOf()获得的最小元素的索引。然后用于slice()获取该索引之前和之后的所有内容,并将它们与concat()const arr = [10, 3, 5, 8, 1, 2, 1, 6, 8];const smallest = Math.min(...arr);const smallestIndex = arr.indexOf(smallest);const newArr = arr.slice(0, smallestIndex).concat(arr.slice(smallestIndex+1));console.log(newArr);

手掌心

function removeSmallest(numbers) {    let indexOfMin = numbers.indexOf(Math.min(...numbers));    return [...numbers.slice(0, indexOfMin), ...numbers.slice(indexOfMin + 1)];}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript