#初めに
Arrayに対する理解が曖昧だったため改めて整理することにした、
##Array
Arrayオブジェクトは、配列型の値を扱うためのオブジェクト。
配列に対して要素の追加
、削除
、結合
、並べ替え
などを行うための機能を提供する。
###生成
生成の方法は、①リテラル表現で生成する方法と②コンストラクタで生成する方法がある。
####①リテラル表現
var ary = ['本田','香川','岡崎'];
####②コンストラクタ
var ary = new Array('本田','香川','岡崎');
####どちらを使うか
例えばコンストラクタで生成する場合、下記はどのような意味を持つだろうか?
var ary = new Array(10);
考えられるのは「長さが10の配列
」か「10という要素を持つ配列
」のどちらか。
正解は「長さが10の配列
」である。
この様に、コンストラクタで生成してしまうと可読性が下がるので、配列リテラルで生成するほうが良い
。
なお、空の配列を作る方法は下記である。
var ary = [];
###代表的なArrayオブジェクトのメンバー(一部)
var ary = ['本田','香川','岡崎'];
var ary2 = ['遠藤','長谷部','長友'];
//基本形
console.log(ary); //(3) ["本田", "香川", "岡崎"]
console.log(ary.length); //3 配列のサイズ
console.log(Array.isArray(ary)); //true 配列かどうか
console.log(ary.indexOf(`岡崎`)) //2 要素のキーの開始位置を取得
//加工
console.log(ary.concat(ary2)); //(6) ["本田", "香川", "岡崎", "遠藤", "長谷部", "長友"] //配列の連結
//追加と削除
console.log(ary.pop(),ary); //岡崎 ←削除した要素 //(2) ["本田", "香川"] ←削除後
console.log(ary.push('内田'),ary); //4 ←追加後の要素数 // (4) ["本田", "香川", "岡崎", "内田"] ←追加後の配列
##代表的なArrayオブジェクトのメンバー(コールバック)
Arrayオブジェクトで代表的なコールバック系のメソッドを3つ説明する。
###forEach
forEachメソッドは指定した関連で順に処理するメソッドである、
①配列の要素を順番に取り出す。
②ユーザー定義関数のcallbackに渡す。
③渡された要素を処理する。
var ary = ['本田','香川','岡崎'];
ary.forEach(function(value, index, array){
console.log(value);
console.log(index);
//console.log(array)
})
//本田
//0
//香川
//1
//岡崎
//2
#####第一引数 valueは要素の値
#####第二引数 indexはインデックスの番号
#####第三引数 arrayは元の配列
なお、console.log(array)は毎回元の配列を吐き出す。(冗長になるのでコメントアウトした)
###map
mapメソッドは配列を指定された関数で加工することが出来る。
callbackで受け取る引数はforEachと同じだが、戻り値(return)は新しい配列を作るために必要になる。
var ary = ['本田','香川','岡崎'];
var member = ary.map(function(value, index, array){
return value+"選手";
})
console.log(member); //(3) ["本田選手", "香川選手", "岡崎選手"]
もしreturn
しなかったら…
var ary = ['本田','香川','岡崎'];
var member = ary.map(function(value, index, array){
// return value+"選手";
})
console.log(member); //(3) [undefined, undefined, undefined]
当然にundefined
になる。
###filter
指定された関数で個々の要素を判定し、条件に合致した要素だけを取り出すメソッド
var ary = ['本田','香川','岡崎'];
var member = ary.filter(function(value, index, array){
return value.indexOf('田') >= 0
//indexOfは該当の文字があればその位置、なければ-1を返す。
})
console.log(member); //["本田"]
callbackがtrue
を返した時だけ、その時の要素を配列に書き戻す。
上記では本田
だけtrue
になるので、本頼みの配列が出来上がる。
##終わりに
Arrayオブジェクトで使用できるコールバック関数は上記の他にsome
、every
、sort
等がある。
##参考
javascript本格入門