为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

烙印99 2022-01-07 16:33:00
这是任务。给定一个整数数组,删除最小值。不要改变原始数组/列表。如果有多个具有相同值的元素,则删除具有较低索引的元素。如果您得到一个空数组/列表,则返回一个空数组/列表。不要更改剩余元素的顺序。这是删除所有最小值的代码。function smallest(arr) {  return arr.filter((it) => it !== Math.min.apply(null, arr)) }这是保留所有重复项的代码。const aa = arr.filter((it,index) => arr.indexOf(it) !== index)我想以某种方式将它们结合起来以获得结果,但仍然无法做到。是否可以或需要使用其他方式?也许你知道如何用reduce解决它?
查看完整描述

3 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

找到最小的,找到它的索引,过滤掉该索引中的项目:


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)


查看完整回答
反对 回复 2022-01-07
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

使用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);


查看完整回答
反对 回复 2022-01-07
?
手掌心

TA贡献1942条经验 获得超3个赞

function removeSmallest(numbers) {

    let indexOfMin = numbers.indexOf(Math.min(...numbers));

    return [...numbers.slice(0, indexOfMin), ...numbers.slice(indexOfMin + 1)];

}


查看完整回答
反对 回复 2022-01-07
  • 3 回答
  • 0 关注
  • 234 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信