w3schools - verificar duplicados array javascript




Existe uma maneira de usar map() em uma matriz em ordem inversa com javascript? (6)

Eu quero usar a função map() em uma matriz javascript, mas gostaria que ela operasse na ordem inversa.

O motivo é que eu estou renderizando componentes React empilhados em um projeto Meteor e gostaria que o elemento de nível superior fosse renderizado primeiro enquanto o restante carregava imagens abaixo.

var myArray = ['a', 'b', 'c', 'd', 'e'];
myArray.map(function (el, index, coll) {
    console.log(el + " ")
});

imprime abcde mas eu gostaria que houvesse um mapReverse () que imprimisse edcba

Alguma sugestão?


Com função de retorno de chamada nomeado

const items = [1, 2, 3];
const reversedItems = items.map(item => item).reverse();

Taquigrafia (sem função de retorno de chamada nomeada) - Arrow Syntax, ES6

var myArray = ['a', 'b', 'c', 'd', 'e'];
myArray.reverse().map(function (el, index, coll) {
    console.log(el + " ")
});

Aqui está o resultado


Outra solução poderia ser:

function mapReverse(array, fn) {
    return array.reduceRight(function (result, el) {
        result.push(fn(el));
        return result;
    }, []);
}

console.log(mapReverse([1, 2, 3], function (i) { return i; }))
// [ 3, 2, 1 ]
console.log(mapReverse([1, 2, 3], function (i) { return i * 2; }))
// [ 6, 4, 2 ]

Você trabalha basicamente com os índices da matriz


Se você não quiser reverter a matriz original, faça uma cópia superficial e, em seguida, mapeie a matriz reversa,

myArray.slice(0).reverse().map(function(...

Sem alterar a matriz, aqui está uma solução O (n) de uma linha que eu vim com:

myArray.map((val, index) => myArray[myArray.length - 1 - index]);

Você pode executar myArray.reverse () primeiro.

 var myArray = ['a', 'b', 'c', 'd', 'e']; myArray.reverse().map(function (el, index, coll) { console.log(el + " ") }); 

Você pode usar Array.prototype.reduceRight()

var myArray = ["a", "b", "c", "d", "e"];
var res = myArray.reduceRight(function (arr, last, index, coll) {
    console.log(last, index);
    return (arr = arr.concat(last))
}, []);
console.log(res, myArray)







arrays