仿¥ã®ä½æ¥ä¸(ã¨ãããåå¼·ä¸)ãé åãä»»æã®æ°ã®è¦ç´ ã«åå²ãããã¨ãªãã¾ããããã¨ã°ã ã¨ãããã¥ããã§ããããã¨ãã°ãããªæãã
[1,2,3,4,5,6,7,8,9].divide(4) => [[1,2,3,4],[5,6,7,8],[9]] [1,2,3,4,5,6,7,8,9].divide(3) => [[1,2,3],[4,5,6],[7,8,9]]
rubyã§ããã°each_slice
ã§ãã(ããã¾)ãä»åã¯ãããjavascriptã§å®è£
ãã¾ãããã¨ãã£ã¦ãããã»ã©é£ãããã¨ã¯ãªããããã£ã¨ããããã§ãã
Array.prototype.divide = function(n){ var ary = this; var idx = 0; var results = []; var length = ary.length; while (idx + n < length){ var result = ary.slice(idx,idx+n) results.push(result); idx = idx + n } var rest = ary.slice(idx,length+1) results.push(rest) return results; } ary = [1,2,3,4,5,6,7,8,9] dividedAry1 = ary.divide(4); console.log(dividedAry1); // => [ [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ], [ 9 ] ] dividedAry2 = ary.divide(3); console.log(dividedAry2); // => [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ]
ã§ãã¾ãããéè¦ã¯ãããã©ãããããã¾ãããã
ã¡ãªã¿ã«ä»åã³ã¼ãã£ã³ã°ä¸ã«å¼ã£ããã£ãã®ã¯slice
ã®ä½¿ãæ¹ã[0,1,2,3,4].slice(0,3)
ã¨ããã¨ããã¦ã£ãã[0,1,2,3]
ãæ»ãå¤ã«ãªãã¨æã£ã¦ããã®ã§ããããããã¯ééããå®éã¯[0,1,2]
ãæ»ãå¤ã§ãããããæåæ°ã¥ããããªããªãè¦å´ããããã¾ããã
ã©ãããslice
ã¯ãµãã¤ç®ã®å¼æ°end
ãæå®ããã¨ããend
ã®ç´åã¾ã§ãåãåºããããªã®ã§ããäºå®MDNã«ã次ã®ããã«æ¸ããã¦ãã¾ãã
slice 㯠end èªä½ã¯å«ããããã®ç´åã¾ã§åãåºãã¾ãã
slice(1, 4) 㯠2 çªç®ã®è¦ç´ ãã 4 çªç®ã®è¦ç´ ã¾ã§ (æ·»åã 1, 2, 3 ã®è¦ç´ ) ãåãåºãã¾ãã
end ã¯è² ã®æ·»åã使ã£ã¦ãé åã®çµããããã®ãªãã»ããã表ããã¨ãã§ãã¾ãã
slice(2, -1) ã¯é åã® 3 çªç®ã®è¦ç´ ãããæå¾ãã 2 çªç®ã®è¦ç´ ã¾ã§åãåºãã¾ãã
end ãçç¥ãããå ´åãslice ã¯é åã®æå¾ã¾ã§åãåºãã¾ãã
ããã¯ç¥ããªãã£ããslice
ã¯æ¯è¼ç使ç¨é »åº¦ã®é«ãã¡ã½ããã®ã¯ãã§ããâ¦â¦ãå¦ä½ã«ããªãã¨ãªãã使ã£ã¦ããã®ãããããããã¾ããã
ããã²ã¨ã¤æ³¨æãããã®ã¯slice(0)
ãããã¯ã¬ã·ã¼ãã®ãªãã¸ã§ã¯ããã³ãã¼ãã¾ããRubyã§ããã¨ããã®dup
ã§ãã(ããã¾)ã
ary = [1,2,3]; fake = ary; // åç §æ¸¡ã copy = ary.slice(0); ary[0] = 2; console.log(ary); //=> [2,2,3] console.log(fake); //=> [2,2,3] console.log(copy); //=> [1,2,3]
ããã«ãã¦ããªããããªæ¸ãæ¹ãããã®ã? 䏿è°ã«æã£ã¦MDNãèªãã§ã¿ãã¨ããâââãµããµããslice
ã¯ç¬¬2弿°ãæå®ããªãã£ãå ´åããªãã¸ã§ã¯ãã®çµããã¾ã§åãåºãã®ããã¤ã¾ãslice(0)
ã¯this[0]
ãããã®çµããã¾ã§åãåºãã¦ãããã¨ã«ãªããçµæã¨ãã¦ããããã¬ã·ã¼ããã³ãã¼ããããã®ããã«è¦ããããã§ããã
ã¾ãã²ã¨ã¤è³¢ããªã£ã¦ãã¾ã£ããããããç´°ããªä»æ§ã調ã¹ã¦ããã®ãããã°ã©ãã³ã°ã®ééå³ã§ãããã