jQuery#map で配列を返してるのに二次元配列にならなかった

jQuery#map の中で配列を返しているのに、帰ってくる配列が flatten したみたいなのが戻るのでバグかな?と思ったら使い方の問題でした。

具体例

var array = $('.hoge').map(function(idx, elem){
 return [$(this).attr('name'), $(this).attr('value')]
})
console.log(array) // [["name1", "value1"], ["name2", "value2"]] を期待するじゃん?

しかし、以下が返却される。

["name1", "value1", "name2", "value2"]

Ruby の flatten したみたいなのが帰ってきた。

結論

return された配列が結合される都合で、二重の配列を返す必要があるとのこと。

return [[$(this).attr('name'), $(this).attr('value')]]

とすると、二次元配列が返ってきます。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする