【问题标题】:Find first element inside array of arrays with second element having highest value查找数组数组中的第一个元素,第二个元素具有最高值
【发布时间】:2020-06-15 12:59:48
【问题描述】:

我有一个像下面这样的对象,我想输出数组中具有最高数字的第一个字符串元素,在这种情况下是澳大利亚。

我在下面尝试过这样的事情,但它没有返回预期的结果,它也不会给出数组中的第一个元素,它是一个字符串 ["Australia", 127]

检查数据后最终输出必须是简单的文本澳大利亚

let data = [
  ["Australia", 23],
  ["Australia", 127],
  ["England", 3],
  ["England", 71],
  ["Australia", 31],
  ["England", 22],
  ["Australia", 81]
];

let maxVals = data.map(function(a) {
  return Math.max.apply(Math, a);
});

console.log(maxVals)

【问题讨论】:

    标签: javascript arrays reactjs ecmascript-6


    【解决方案1】:

    您可以减少数组并获得具有第一个最大值的数组。然后获取字符串。

    let data = [["Australia", 23], ["Australia", 127], ["England", 3], ["England", 71], ["Australia", 31], ["England", 22], ["Australia", 81]],
        result = data.reduce((a, b) => a[1] >= b[1] ? a : b)[0];
    
    console.log(result);

    【讨论】:

    【解决方案2】:

    尝试排序——对于小数组来说这是最简单的

    注意:如果您不介意修改原始数组,可以删除切片

    let data = [
      ["Australia", 23],
      ["Australia", 127],
      ["England", 3],
      ["England", 71],
      ["Australia", 31],
      ["England", 22],
      ["Australia", 81]
    ];
    
    
    let maxVals = data
      .slice(0)           // only if you do not want to modify the original
      .sort((a,b)=>a[1]-b[1]).pop()[0];
    
    console.log(maxVals)

    【讨论】:

      【解决方案3】:

      遗憾的是,javascript 在其标准库中没有提供您正在寻找的 maxBy/minBy,但这种算法很常见。

      const data = [
        ["Australia", 23],
        ["Australia", 127],
        ["England", 3],
        ["England", 71],
        ["Australia", 31],
        ["England", 22],
        ["Australia", 81]
      ];
      let max = Number.MIN_VALUE;
      let maxValue = undefined;
      for (let item of data) {
        if (item[1] > max) {
          max = item[1];
          maxValue = item;
        }
      }
      console.log(maxValue);
      

      请注意,这在性能方面等同于 reduce 解决方案,唯一的区别是此循环是显式的,并且它支持空数组。

      【讨论】:

        猜你喜欢
        • 2015-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-23
        • 2022-11-16
        • 2019-08-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多