[javascript] 자바 스크립트와 역순으로 배열에서 map ()을 사용하는 방법이 있습니까?

map()자바 스크립트 배열 에서 함수 를 사용하고 싶지만 역순으로 작동하고 싶습니다.

그 이유는 Meteor 프로젝트에서 스택 된 React 구성 요소를 렌더링하고 나머지는 아래 이미지를로드하는 동안 최상위 요소가 먼저 렌더링되기를 원하기 때문입니다.

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

인쇄하다 a b c d e 되지만 인쇄 된 mapReverse ()가 있었으면 좋겠습니다.e d c b a

어떤 제안?



답변

원래 배열을 되돌리고 싶지 않다면 얕은 복사본을 만든 다음 반전 된 배열을 매핑 할 수 있습니다.

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


답변

배열을 전혀 변경하지 않고 여기에 한 줄짜리 O (n) 솔루션이 있습니다.

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


답변

당신이 사용할 수있는 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)


답변

명명 된 콜백 기능 사용

const items = [1, 2, 3];
const reversedItems = items.map(function iterateItems(item) {
  return item; // or any logic you want to perform
}).reverse();

속기 (명명 된 콜백 함수 없음)-화살표 구문, ES6

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

결과는 다음과 같습니다.

여기에 이미지 설명 입력


답변

또 다른 해결책은 다음과 같습니다.

const reverseArray = (arr) => arr.map((_, idx, arr) => arr[arr.length - 1 - idx ]);

기본적으로 배열 인덱스로 작업합니다.


답변

mapReverse 함수를 한 번 작성한 다음 사용하는 것을 선호합니다. 또한 이것은 배열을 복사 할 필요가 없습니다.

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 ]


답변

function mapRevers(reverse) {
    let reversed = reverse.map( (num,index,reverse) => reverse[(reverse.length-1)-index] );
    return reversed;
}

console.log(mapRevers(myArray));

I 당신은 Revers를 매핑하기 위해 배열을 전달하고 함수에서 반전 된 배열을 반환합니다. 맵 cb에서는 전달 된 배열에서 10 (길이)에서 1까지 계수하는 인덱스 값을 가져옵니다.