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 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까지 계수하는 인덱스 값을 가져옵니다.