子阵列的最大值

时间:2018-03-09 10:21:05

标签: javascript arrays max min

我想从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]]

然后我尝试从一个,两个和三个变量中获取最大值,但总是错误[NaN]。

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

我在JS方面不是很好,所以任何帮助我都会非常好。感谢

2 个答案:

答案 0 :(得分:3)

您可以尝试使用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函数返回另一个数组。如果数组中有一个项目,它将返回包含一个元素的数组。

答案 1 :(得分:1)

  

的console.log(Math.max(...之一)); =>南

因为slice从输入数组返回数组(即one 2d数组),所以需要获得第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));