很 基本 的 问题 , 但 我 似乎 找 不到 任何 例子 , 如何 解决 它 在 Javascript 。
我 想 创建 一 个 函数 , 你 传递 一 个 代表 " n " 的 数字 , 它 返回 数组 中 第 n 个 最 小 数字 的 位置 。
例如 , 如果 我 这样 做 :
array = [5,6,1,1,1,8]
n = 3
location = nth_smallest(array, n)
中 的 每 一 个
位置 将 等于 4 , 因为 第 三 个 最 小 的 数字 是 1 , 但 我 想 跳过 该 数字 的 前 几 个 重复 。
找到 第 n 个 最 小 数 的 位置 的 常见 解决 方案 是 :
array = [5,6,1,1,1,8]
n = 3
nth_lowest = array.slice(0).sort()[n]
location = $.inArray(nth_lowest, array)
格式
然而 , 问题 是 , 它 总是 返回 位置 2 , 因为 它 知道 第 三 小 的 数字 是 1 , 但 inArray 函数 不 关心 重复 。
有 没有 什么 方法 可以 做到 这 一 点 , 可能 不 使用 排序 函数 ? 它 似乎 占用 了 大量 的 处理 , 这 是 一 个 将 经常 运行 的 函数 。
3条答案
按热度按时间lfapxunr1#
如果希望最后一个位置具有该值,请在排序后执行以下操作:
或者,如果您想要第一个位置,请执行以下操作:
当然,
lastIndexOf
或indexOf
(如其他答案之一所示)将导致更少的代码。mrwjdhj32#
如果我没理解错你的问题,你是在寻找第n个最小数字的 * 最后一个 * 示例的位置吗?如果是,试试这个:
lastIndexOf
的haxy填隙可以如下完成:此填充程序需要如下调用:
location = lastIndexOf(array,nth_smallest);
nqwrtyyt3#
要找到数组中的最小数字或最大数字,首先需要对任意数组排序,然后数组将是排序后的短序列,任何数组总是在索引中(
arr[0]
)将是任何数组中的最小数字,而(arr[arr.lenght-1]
)总是最大数字,因为我们是按序列排序的,谢谢...