在数组的数组中找到最小的数字

时间:2019-01-19 15:56:53

标签: javascript arrays minimum

我正在尝试编写一个函数以在数组的数组中查找最小的数字。

已经尝试过了,但是当数组上有数组时,我真的不知道该怎么办。

const arr = [4, 8, 2, 7, 6, 42, 41, 77, 32, 9]
const min = Math.min(arr)
console.log(min)

3 个答案:

答案 0 :(得分:4)

通过使用ES6,您可以使用spread syntax ...,它将数组作为参数。

const arr = [4, 8, 2, 7, 6, 42, 41, 77, 32, 9];
const min = Math.min(...arr);

console.log(min);

使用ES5,您可以使用Function#apply,它使用this和参数作为数组。

const arr = [4, 8, 2, 7, 6, 42, 41, 77, 32, 9];
const min = Math.min.apply(null, arr);

console.log(min);

对于非平面数组,请采用扁平函数,例如

const
    flat = array => array.reduce((r, a) => r.concat(Array.isArray(a) ? flat(a) : a), []),
    array = [[1, 2], [3, 4]],
    min = Math.min(...flat(array));

console.log(min);

答案 1 :(得分:2)

您可以使用map遍历嵌套数组,然后对每个嵌套数组使用Math.min(...array)以获取最小值。 map的输出是一个最小值数组。

const arr = [[4, 8, 2], [7, 6, 42], [41, 77, 32, 9]];

const out = arr.map(a => Math.min(...a));

console.log(out);

答案 2 :(得分:0)

使用点差...flat

const a = [[0, 45, 2], [3, 6, 2], [1, 5, 9]];

console.log(Math.min(...a.flat()));

或者您可以使用reduce

const arr = [[7, 45, 2], [3, 6, 2], [1, 5, 9]];

let r = arr.reduce((a, e) => Math.min(a, ...e), Infinity) 

console.log(r);