【问题标题】:JS: find lowest/highest number from array within a specific rangeJS:从特定范围内的数组中查找最低/最高数
【发布时间】:2015-05-22 10:37:31
【问题描述】:

我有一个包含几个数字的数组:

var arr = ["10","14","23","2","21","17","72","16","73","52"];

我知道我可以使用 Math.min.apply(Math, arr) 从数组中获取最小数字或使用 Math.max.apply(Math,arr) 获取最大数字,但现在我只想要数组中最后 3 个元素的最小或最大数字。

有什么建议吗?

【问题讨论】:

  • “最后 3 个字符”还是最后 3 个元素?
  • 你能用这个arr.slice(Math.max(arr.length - 3, 1))然后将Math函数应用到输出数组吗?
  • @Vohuman,最后 3 个元素。在描述中更改了它。
  • 是的,可以使用Array.prototype.slice对数组进行切片,然后就可以使用切片数组了。 var slicedArr = arr.slice(-3)
  • @Vohuman :你显然没有读过它。我想从最后 3 个元素中,最高或最低的数字。我不想切任何东西;/

标签: javascript arrays math apply min


【解决方案1】:

使用Array.prototype.slice(),您可以提取数组中的一系列值。这将允许您仅对指定范围内的值执行min()max() 函数。

下面的minmax() 函数将返回一个具有minmax 值的对象。

function minmax(arr, begin, end) {
    arr = [].slice.apply(arr, [].slice.call(arguments, 1));
    return {
        'min' : Math.min.apply(Math, arr),
        'max' : Math.max.apply(Math, arr)
    }
}

var values = ["10","14","23","2","21","17","72","16","73","52"];
var result = minmax(values, -3);

document.body.innerHTML = JSON.stringify(result, undefined, '    ');
body {
  font-family: monospace;
  white-space: pre;
}

【讨论】:

  • 这是一个高级解决方案。不错的方法!
猜你喜欢
  • 1970-01-01
  • 2016-01-16
  • 1970-01-01
  • 2021-04-18
  • 1970-01-01
  • 1970-01-01
  • 2011-05-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多