2016-04-05 4 views
24

私はmap()関数をjavascript配列で使いたいのですが、逆の順序で操作したいと思います。javascriptと逆の順序で配列のmap()を使用する方法はありますか?

で、私が積み重ねられたレンダリングだ理由は、流星のプロジェクトにコンポーネントを反応させ、下記の残りの負荷イメージしながら、トップレベルの要素が最初にレンダリングしたいと思います。

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

プリントアウトa b c d eが、私はe d c b a

任意の提案を印刷mapReverseは()があった望みますか?

+2

はなぜ '配列をreverse'ませんか? – John

+2

要素を並べ替えるには、配列インデックスでz-indexを設定します。 zインデックスを負の値に設定できると思います。 –

+0

良いアイデアのように聞こえます。 – John

答えて

38

あなたが元の配列を逆にしたくない場合、あなたはそれの浅いコピーを作ることができ、その後逆配列のマップ、

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

私はちょうど負のインデックスを使用してZインデックスを指定しましたが、この方法では、これは最も正しい質問です。 –

+0

なぜ.slice(0)が必要ですか? myArray.slice(0).reverse()の代わりにmyArray.reverse()を使用するのはなぜですか?私のコメントのための答えはここにあるように見える:https://stackoverflow.com/questions/5024085/whats-the-point-of-slice0-here – Haradzieniec

+0

Haradzieniec - それは、元の質問をして、額装された方法については、細目に行きますZ-indexのCSSプロパティを設定するために元の順序付けが必要であったが、逆の順序で印刷されていることを確認してください。 – AdamCooper86

-1

myArray.reverse()を先に実行できます。

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

一般的には、私の解決策になります、しかし、セットアップでは、私は一番上のカードを使用している最後のインデックスで配置されます。私は、より良いインデックス作成が問題を解決できると思う。 –

+11

メモと同様に、元の配列を元の位置に戻します。つまり、配列の順序が破壊的に変更されます。 – AdamCooper86

6

あなたは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)
を使用することができます

0

私はwri一度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 ] 
関連する問題