首页 > 解决方案 > 如何获取多维数组中最长的单词?

问题描述

我正在尝试找到获取每个数组中最长单词的方法:

var carnivores = ['lion', 'shark', 'wolve', 'puma', 'snake'];
var herbivores = ['elephant', 'giraffe', 'gacelle', 'hippo', 'koala'];
var omnivores = ['human', 'monkey', 'dog', 'bear', 'pig'];

然后我创建一个多维数组: var animals = [carnivores, herbivores, omnivores];

为了获得每个数组的最长单词,我这样做:

var carnivores = ['lion', 'shark', 'wolve', 'puma', 'snake'];
var herbivores = ['elephant', 'giraffe', 'gacelle', 'hippo', 'koala'];
var omnivores = ['human', 'monkey', 'dog', 'bear', 'pig'];
var animals = [carnivores, herbivores, omnivores];

function longestAnimals() {
  var longest = "";
  for (var i = 0; i < animals.length; i++) {
    for (var j = 0; j < animals[i].length; j++) {
      if (animals[i][j].length > longest.length) {
        longest = animals[i][j];
      }
    }
  }
  return longest;
}

console.log(longestAnimals());

我的代码返回所有数组中最长的单词,它只显示大象。我该怎么做才能获得鲨鱼、大象和猴子。谢谢!

标签: javascriptmultidimensional-array

解决方案


创建一个获取一个数组中最长单词的函数,然后将其映射到其他函数:

function longest(arr) {
    let longest = "";
    for (const ele of arr) {
        if (ele.length > longest.length) {
            longest = ele;
        }
    }
    return longest;
}

function longestInEach(arr) {
    return arr.map(v => longest(v));
}

const carnivores = ['lion', 'shark', 'wolve', 'puma', 'snake'];
const herbivores = ['elephant', 'giraffe', 'gacelle', 'hippo', 'koala'];
const omnivores = ['human', 'monkey', 'dog', 'bear', 'pig'];
const animals = [carnivores, herbivores, omnivores];

console.log(longestInEach(animals)) // ["shark", "elephant", "monkey"]


推荐阅读