代码之家  ›  专栏  ›  技术社区  ›  Baldini

子阵列的最大值

  •  1
  • Baldini  · 技术社区  · 7 年前

    我想从array1数组中的子数组中获取最大值。

    var array1 = [[4, 2, 7, 1], [20, 70, 40, 90], [1, 2, 0]];
    
    let one = array1.slice(0,1);
    let two = array1.slice(1,2);
    let three = array1.slice(2,3);
    
    console.log(one);
    
    console.log(two);
    
    console.log(three);
    

    结果我有:

    > Array [Array [4, 2, 7, 1]]
    > Array [Array [20, 70, 40, 90]]
    > Array [Array [1, 2, 0]]
    

    然后,我尝试从一个、两个和三个变量中获取最大值,但始终是一个错误。

    console.log(Math.max(...one)); => Nan
    

    我在JS方面不是很好,所以如果有任何帮助,我会非常感激的。谢谢

    2 回复  |  直到 7 年前
        1
  •  3
  •   Suren Srapyan    7 年前

    你可以试试 map 函数和,用于每个子数组调用 Math.max 它将为子数组返回单个值。

    const array1 = [[4, 2, 7, 1], [20, 70, 40, 90], [1, 2, 0]];
    
    const maxValues = array1.map(item => Math.max(...item));
    
    console.log(maxValues);

    slice 函数返回另一个数组。如果数组中有一个项,它将返回包含一个元素的数组。

        2
  •  1
  •   gurvinder372    7 年前

    安慰对数(数学最大值(…1))=&燃气轮机;南安

    因为 slice 从输入数组返回数组(即。 one 是一个 二维阵列 ),需要获取第0个索引

    let one = array1.slice(0,1)[0];
    

    类似地

    let two = array1.slice(1,2)[0];
    let three = array1.slice(2,3)[0];
    

    现在 console.log(Math.max(...one)); 将为您提供正确的值

    要从所有阵列获取最大值,请尝试

    console.log(Math.max(...one,...two,...three)); //spread with comma
    

    用于获取单个阵列

    console.log(array1.map( s => Math.max.apply(null, s));