如何返回其他数组?

时间:2019-01-02 13:08:32

标签: javascript

我需要从每个提供的子数组中返回一个包含最大数目的数组。因此,我编写了以下代码,它可以工作,但是我有: [[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);

6 个答案:

答案 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]