2009-03-31 5 views
40

私は2つのタプルの配列をあるドメイン(日付)から別のドメイン(タイムスタンプ)にマッピングしています。残念ながら、jQuery.mapは返す2タプルを自動的に平坦化し、do_not_flattenパラメータが表示されません。自動的にフラット化しないjQueryマップユーティリティはありますか?

ライブラリーには自動平坦化されないものがありますか?

補遺:それはJavaScript 1.6あるので、私は、私は自動平らにしないArray.mapを、使用してはならないことを前提としています。私が理解しているように、jQueryは互換性の理由から実行しているJavaScriptのバージョンを抽象化することになっています。

+0

jQuery devsはこれが目的であると言っています:http://bugs.jquery.com/ticket/10541 – Pistos

+0

これをdocsに持っていくためにGHの問題をオープンしました:https://github.com/jquery/api。 jquery.com/issues/990 – Pockets

答えて

2

2タプルが何であるかわかりません。私が見たGoogleの結果から正しく得られたかどうかはわかりません。しかし、あなたはjQuery.eachを見ましたか?

+0

2タプルは、値のペア(x​​、y)です。 3タプルは3つの値(x、y、z)のセットです。確かに、私はループを使ってそれを行うことができますが、 'map'のポイントは、入力型から出力型への単一の関数のマッピングです。 – cdleary

+0

多分私は自分のリーグに出ていませんが、「このメソッドに提供されている翻訳機能は配列内の各アイテムに対して呼び出されています」というループのようなものです。 – evilpenguin

+0

オブジェクトの配列を使用できますか? [{a、b}、{c、d}、{e、f}]のようにコールバック関数でもオブジェクトを返すようにしますか? – evilpenguin

61

私は同じ問題を抱えていました。一方

$.map([1, 2, 3], function(element, index) { 
    return [ element + 1, element + 2 ]; 
}); 
=> [2, 3, 3, 4, 4, 5] 

$.map([1, 2, 3], function(element, index) { 
    return [ [ element + 1, element + 2 ] ]; 
}); 
=> [[2, 3], [3, 4], [4, 5]] 

役に立てば幸いそれはあなただけで$ .MAPコールバック内からネストされた配列を返すことができ、それは外側の配列をフラット化しませんが判明します!

+10

本当にきちんとした!しかし真剣に、そのようなハックは必要ありません。とにかくありがとう! –

+4

実際、マップ関数はこの動作を制御するためにブール値などを受け入れるべきです。 – monoceres

+5

マップ関数はその結果をまったく平らにするべきではないと思います。私はめったにこの振る舞いが必要な理由はありません。誰かが結果を平らにしたい場合には、別の機能が必要です。 –

関連する問題