読者です 読者をやめる 読者になる 読者になる

unshift, shift, pop, pushが混乱するので、絵で整理した

配列の追加・取り出しに関する4つのメソッド(unshift, shift, pop, push)がいつも混乱するので絵で整理した。

絵にすれば覚えられそう!いちお練習のため、自分がよく使うRuby, PHP, JavaScriptでコードも書いた。

・いずれの言語においても上記4つのメソッドは似たような名前で存在しており、用途も同じ。
・いずれの言語のいずれのメソッドも破壊的メソッド
・言語、バージョンによってメソッドの返り値は異なる。

という具合だった。

Ruby

ruby 1.9.2

# unshift
a = [1, 2, 3]
b = a.unshift 0
p a #[0, 1, 2, 3]
p b #[0, 1, 2, 3]

# shift
a = [1, 2, 3]
b = a.shift
p a #[2, 3]
p b #1

# pop
a = [1, 2, 3]
b = a.pop
p a #[1, 2]
p b #3

# push
a = [1, 2, 3]
b = a.push 4
p a #[1, 2, 3, 4]
p b #[1, 2, 3, 4]

# <<
a = [1, 2, 3]
b = a << 4
p a #[1, 2, 3, 4]
p b #[1, 2, 3, 4]

PHP

PHP 5.3.10

<?php
// unshift
$a = array(1, 2, 3);
$b = array_unshift($a, 0);
var_dump($a); //array(0, 1, 2, 3)                                                                                                                             
var_dump($b); //4(結果配列の要素数)

// shift
$a = array(1, 2, 3);
$b = array_shift($a);
var_dump($a); //array(2, 3)
var_dump($b); //1

// pop
$a = array(1, 2, 3);
$b = array_pop($a);
var_dump($a); // array(1, 2)
var_dump($b); // 3

// push
$a = array(1, 2, 3); 
$b = array_push($a, 4); 
var_dump($a); //array(1, 2, 3, 4)
var_dump($b); //4 (結果配列の要素数)

// [] =
$a = array(1, 2, 3);
$b = $a[] = 4;
var_dump($a); //array(1, 2, 3, 4)
var_dump($b); //4(追加した値)

JavaScript

node 0.6.12

var a = [1, 2, 3];                                                                                                                                                                                          
var b = a.unshift(0);
console.log(a); //[0, 1, 2, 3]
console.log(b); //4(結果配列の要素数)

var a = [1, 2, 3];
var b = a.shift();
console.log(a); //[2, 3]
console.log(b); //1

var a = [1, 2, 3];
var b = a.pop();
console.log(a); //[1, 2]
console.log(b); //3

var a = [1, 2, 3];
var b = a.push(4);
console.log(a); //[1, 2, 3, 4]
console.log(b); //4(結果配列の要素数)