[英]How can I return a different array?
我需要从每个提供的子数组中返回一个包含最大数目的数组。 因此,我编写了以下代码,并且可以运行,但是我有: [[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);
您可以使用具有扩展语法的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)
循环并排序,然后使用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]);
}
像这样使用[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]]);
您可以映射降序排序的元素的第一个元素。
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]]));
您可以使用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] ]));
您可以使用平面函数
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]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.