我需要从每个提供的子数组中返回一个包含最大数目的数组。因此,我编写了以下代码,它可以工作,但是我有:
[[25],[48],[21],[-3]]
,而不是[25,48,21,-3]
。我可以更改一些内容以获得正确的答案吗?
function largestOfFour(arr) {
for (let i = 0; i < arr.length; i++) {
arr[i].sort(function(a,b) {
return b - a;
}).map(function() {
return arr[i].splice(1);
})
}
return arr;
}
var result = largestOfFour([[17, 23, 25, 12], [25, 7, 34, 48], [4, -10, 18, 21], [-72, -3, -17, -10]]);
console.log(result);
答案 0 :(得分:3)
您可以使用map
和扩展语法...
来返回一维数组,如 @str 所指出。
function largestOfFour(arr) {
return arr.map(a => Math.max(...a))
}
const arr = [[17, 23, 25, 12], [25, 7, 34, 48], [4, -10, 18, 21], [-72, -3, -17, -10]]
const result = largestOfFour(arr);
console.log(result)
您也可以使用reduce
function largestOfFour(arr) {
return arr.reduce((r, a) => r.concat(Math.max(...a)), [])
}
const arr = [[17, 23, 25, 12], [25, 7, 34, 48], [4, -10, 18, 21], [-72, -3, -17, -10]]
const result = largestOfFour(arr);
console.log(result)
答案 1 :(得分:1)
循环并排序,然后使用map
;返回每个子数组的第一个元素;
function largestOfFour(arr) {
for (let i = 0; i < arr.length; i++) {
arr[i].sort(function(a,b) {
return b - a;
});
}
return arr.map(array => array[0]);
}
最好还是合而为一。
function largestOfFour(arr) {
return arr.map(array => array.sort((a,b) => b - a)[0]);
}
答案 2 :(得分:0)
使用[0]
索引来获取每个数组的第一个字符,如下所示:
function largestOfFour(arr) {
for (let i = 0; i < arr.length; i++) {
arr[i].sort(function(a,b) {
return b - a;
}).map(function() {
// HERE
return arr[i].splice(1)[0];
})
}
return arr;
}
largestOfFour([[17, 23, 25, 12], [25, 7, 34, 48], [4, -10, 18, 21], [-72, -3, -17, -10]]);
答案 3 :(得分:0)
您可以映射降序排列的元素的第一个元素。
function largestOfFour(array) {
return array.map(a => a.sort((a, b) => b - a)[0]);
}
console.log(largestOfFour([[17, 23, 25, 12], [25, 7, 34, 48], [4, -10, 18, 21], [-72, -3, -17, -10]]));
答案 4 :(得分:0)
您可以使用map
来返回一个新数组,然后使用Math.max
从该数组中获取最大值
function largestOfFour(arr) {
return arr.map(item => {
return [Math.max.apply(null, item)]
})
}
console.log(largestOfFour([
[17, 23, 25, 12],
[25, 7, 34, 48],
[4, -10, 18, 21],
[-72, -3, -17, -10]
]));
答案 5 :(得分:-2)
您可以使用平面函数
var arr1 = [1, 2, [3, 4]];
arr1.flat();
// [1, 2, 3, 4]
var arr2 = [1, 2, [3, 4, [5, 6]]];
arr2.flat();
// [1, 2, 3, 4, [5, 6]]
var arr3 = [1, 2, [3, 4, [5, 6]]];
arr3.flat(2);
// [1, 2, 3, 4, 5, 6]