繁体   English   中英

如何返回其他数组?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM