亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Array#each與Array#map

Array#each與Array#map

FFIVE 2019-10-16 13:16:32
hash = { "d" => [11, 22], "f" => [33, 44, 55] }# case 1hash.map {|k,vs| vs.map {|v| "#{k}:#{v}"}}.join(",")=> "d:11,d:22,f:33,f:44,f:55"# case 2hash.map {|k,vs| vs.each {|v| "#{k}:#{v}"}}.join(",")=> "11,22,33,44,55"唯一的區別是案例1使用vs.map,案例2使用vs.each。這里發生了什么?
查看完整描述

3 回答

?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

Array#each 對數組的每個元素執行給定的塊,然后返回數組本身。


Array#map 也為數組的每個元素執行給定的塊,但返回一個新數組,其值是該塊每次迭代的返回值。


示例:假設您已經定義了一個數組:


arr = ["tokyo", "london", "rio"]

然后嘗試執行each:


arr.each { |element| element.capitalize }

# => ["tokyo", "london", "rio"]

注意,返回值只是同一數組。each塊中的代碼將被執行,但是不會返回計算出的值;并且由于代碼沒有副作用,因此該示例沒有做任何有用的工作。


相反,調用數組的map方法將返回一個新數組,其元素是執行該map塊的每一輪的返回值:


arr.map { |element| element.capitalize }

# => ["Tokyo", "London", "Rio"]


查看完整回答
反對 回復 2019-10-16
?
慕容708150

TA貢獻1831條經驗 獲得超4個贊

以下是有關地圖與每個地圖的區別的快速演示


a = ["a", "b", "c"];

#Array.map

p a.map {|item| "map_" + item}

#prints ["map_a", "map_b", "map_c"]


#Array.each

p a.each {|item| "map_" + item}

#prints ["a", "b", "c"]

您會看到map返回,["map_a", "map_b", "map_c"]而每個map 只是迭代但返回原始數組:["a", "b", "c"]。


因此,每個數組都用于處理數組,而map則用于處理數組。


查看完整回答
反對 回復 2019-10-16
  • 3 回答
  • 0 關注
  • 595 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號