Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

.map javascript

Eu estou estudando algoritmos com Javascript e tinha um exercício com arrays, sei que array multidimensional tem que usar mais de um for para acessar os elementos, mas eu queria tentar de outra forma com .map, ma acho que eu não entendi o que retorna o .map.

Minha idéia era usar o .map para pegar separar os arrays em elementos separados, mas pelo que eu vi o .map não faz isso, eu me enganei?

O exercício é Return Largest Numbers in Arrays.

Obs: código tá errado, estou testando para entender.

function largestOfFour(arr) {
  // You can do this!
    var largestNumber = 0;
    var newarr = [];
  var results = arr.map(function(num) {

   for(i=0; num.length; i++) {
  if (arr[i] > arr[largestNumber]) {
    largestNumber = arr[i];
  }
}
return largestNumber;

    console.log(largestNumber);
  });

  return results;
}

largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
2 respostas
solução!

Olá Gisele,

Para mim aqui o .map funcionou muito bem, só tive que fazer alguns acertos no código, vou disponibilizar as alterações que eu fiz, pelo que eu entendi o exercício deverá retornar o maior valor em cada um dos arrays certo?

Segue as alterações que fiz, qualquer coisa nem olha, continua tentando :D

Se tiver algum problema só avisar :)

Espero ter ajudado

function largestOfFour(arr) {

  // You can do this!
  var largestNumber = 0;
  var newarr = [];
  var results = arr.map(function(num) {
    for(i=0; i < num.length; i++) {
      if (num[i] > largestNumber) {
        largestNumber = num[i];
      }
    }
    console.log(largestNumber);
    return largestNumber;


  });

  return results;
}

largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);

Obrigada, parece que foram uns erros de digitação. É dificil memorizar sem praticar no dia a dia, sempre esqueço alguma coisa... Tem outras formas de resolver, nem precisava de um array vazio. Era só para descobrir o maior valor de cada um dos arrays, achei que a minha lógica estava errada. Código funcionando:

function largestOfFour(arr) {
  // You can do this!
    var results = arr.map(function(num) {
  var largestNumber = 0; 
   for(var i=0;i<num.length; i++) {

   if (num[i] > largestNumber) {
    largestNumber = num[i];
    }
   }
   return largestNumber;
  });

  return results;
}

largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);