【问题标题】:Change index based on the lowest value [duplicate]根据最小值更改索引[重复]
【发布时间】:2018-12-26 22:15:27
【问题描述】:

JavaScript 中是否有允许我更改索引的函数?比如我在一个数组中有4个值:

var arr = [10, -20, 20, 30]

现在我想将最低值设置为第一个索引,然后在相同模式之后设置。索引应该是上面的例子:

[-20, 10, 20, 30]

【问题讨论】:

  • 您在寻找Array.prototype.sort()吗?
  • 谢谢帕特里克,这正是我想要的。
  • 那么问题是什么?排序?还是(仅)移动第一个元素?

标签: javascript arrays sorting numbers


【解决方案1】:

你可以得到最小值的索引,拼接它并取消这个值。

结果不会改变其他元素的顺序,例如 sort。

var array = [10, -20, 20, 30],
    index = array.reduce((r, v, i, a) => a[r] < v ? r : i, 0);

array.unshift(array.splice(index, 1)[0]);

console.log(array);

【讨论】:

  • 谢谢,Nina,这也是一个很酷的方法!
【解决方案2】:

听起来您想对数组进行排序。默认的 JS 排序使用基于字符串的比较。您需要为数值比较提供自己的比较器函数:

var arr = [10, -20, 20, 30]

arr.sort((i, j) => i - j)

console.log(arr)

【讨论】:

  • (i, j) =&gt; i - j 足够时,您的排序方法非常愚蠢,此外,如果这是答案,那么有很多重复项可以关闭它,无需再次回答。
  • 谢谢 ic3b3rg “排序”是我要找的。​​span>
  • @PatrickRoberts 好的,谢谢 - 这是一个更好的比较器,我更新了。
猜你喜欢
  • 2021-06-09
  • 2022-08-09
  • 2017-07-28
  • 1970-01-01
  • 1970-01-01
  • 2012-09-30
  • 1970-01-01
  • 2018-08-17
  • 2019-04-06
相关资源
最近更新 更多