【问题标题】:javascript - Get largest value(s) in multi-dimensional arrayjavascript - 获取多维数组中的最大值
【发布时间】:2015-04-22 12:22:21
【问题描述】:

我正在使用this tutorial 来获取多维数组的最大“第一个”[0] 值。

array = [[1, 5], [4, 7], [3, 8], [2, 3],  
 [12, 4], [6, 6], [4, 1], [3, 2], 
 [8, 14]]

 array.reduce(function(max, arr) {
        return max >= arr[0] ? max : arr[0];
}, -Infinity);

但是我怎样才能获得其他关联值?换句话说,因为[12, 4] 12 是最高值,但我怎样才能得到“4”?
*note 从第一个 val 对数组进行排序后,我需要访问所有值。

【问题讨论】:

  • array.sort(function (a, b) { return b[0] - a[0]; })[0][1];
  • 多维数组是魔鬼,不应该使用。你有没有想过使用一个对象?
  • 嗯,就是这样。应该忘记整个计算机图形,因为@JoeFitter 说多维数组不好。

标签: javascript


【解决方案1】:

该代码仅检查嵌套数组的第一个值。如果对您没问题,您只需存储整个嵌套数组,而不是第一个值。所以:

var result = array.reduce(function(max, arr) {
    return max[0] >= arr[0] ? max : arr;
});

请注意,我删除了-Infinity,在这种情况下,第一次迭代将已经从数组的第一项开始(在您的情况下为[1, 5])。 所以现在您可以使用result[0] 访问12,使用result[1] 访问4

【讨论】:

  • 谢谢,我更新了我的问题。我需要在排序后访问所有值
  • 不清楚你想要什么。你想获得[12, 4] 作为结果——其中第一项是“父”数组中最大的第一项——还是你想使用第一项作为索引对所有值进行排序?需要明确的是,在第二种情况下,您只需对原始数组进行排序,因此您将获得另一个多维数组作为结果。
  • 你的第一条评论就是我所追求的。排序后,我需要[12,4](所有值)。我认为您的帖子是我所追求的,我会尽快检查。
  • 在那种情况下,我的回答正是您需要的。您将在result 变量中获得[12, 4] - 提供原始问题中的array
【解决方案2】:

您可以尝试以下方法:

array.reduce(function(max, arr) {
    return max >= arr[0] ? max : arr[0];
});

或者你可以使用 Math.max:

array.reduce(function(max, arr) { 
    return Math.max(max, arr[0]); 
});

【讨论】:

    【解决方案3】:

    听起来您想对列表进行排序并从第一个结果中获取第二项:

    array.sort(function(a,b) { 
       return a[0] > b[0] ? -1 : 1 
    })[0][1]; -- 4
    

    【讨论】:

    • 谢谢,我需要这两个值。并且在多个值的情况下,在对集合的第一个值进行排序后,我将需要它们
    • 我很高兴这有帮助,但 ZERO 的答案可能更适合这个特定的用例,因为 reduce 只枚举列表一次,而 sort 可以解析它多次。此外,结尾 result 将包含所有附加值,就像这样。
    猜你喜欢
    • 1970-01-01
    • 2012-06-24
    • 2017-11-03
    • 2017-01-13
    • 2017-10-16
    • 1970-01-01
    • 2011-04-04
    • 2021-10-17
    • 1970-01-01
    相关资源
    最近更新 更多