Index |
HOME > プログラムTOP > JavaScript |
||||||||||||||||||||||||||||||||||||||||||||
配列の知識と技術(1)
JavaScript の実用的な Tips です。ここでは、配列を扱う Array オブジェクトを扱います。実装済みの Array オブジェクトのコンストラクタ、プロパティ、メソッドのうち、主なものについて解説しています。
sasaraan programming ![]() Exposition ■配列の作成
配列を扱う Array オブジェクトには三つのコンストラクタが用意されています。通常は、new キーワードとコンストラクタを利用して Array オブジェクトを作成します。
// JavaScript Source
var a = new Array(11, 22, 33, 44, 55, 66, 77, 88, 99);
var n = a[0]; // = 11
n = a[8]; // = 99
a[8] = 0; // 要素の値を変更
n = a[8]; // = 0
要素数を取得したい時は、length メソッドを使用します。length メソッドは配列の要素数を返します。
length : 要素数の取得 (IE3/NN3)
// JavaScript Source
var a = new Array(11, 22, 33, 44, 55, 66, 77, 88, 99);
var n = a.length; // = 9
■要素の追加と削除
配列に要素を追加する時は、添え字を指定して値を代入します。既存のデータの値を変更する時も同様です。この時、添え字が配列の要素数をオーバーしても構いません。自動的に要素数が算出され確保されます。ただし、値が設定されていない要素は、未定義を表す "undefined" を返します。
// JavaScript Source
var a = new Array(5); // 要素数 5 の配列
a[2] = 33; // 添え字 2 の要素に値を設定, a = (-, -, 33, -, -)
a[8] = 99; // 添え字 8 の要素に値を設定, a = (-, -, 33, -, -, -, -, -, 99)
var n = a[1]; // 添え字 1 の要素の値を取得, n = undefined
要素の追加・削除を行う便利なメソッドも用意されています。
// JavaScript Source
var a = new Array(22, 33, 44, 55, 66, 77, 88);
var n;
a.unshift(11); // 要素を先頭に追加, a = (11, 22, 33, 44, 55, 66, 77, 88)
a.push(99); // 要素を末尾に追加, a = (11, 22, 33, 44, 55, 66, 77, 88, 99)
n = a.shift(); // 先頭の要素を取得・削除, n = 11 / a = (22, 33, 44, 55, 66, 77, 88, 99)
n = a.pop(); // 末尾の要素を取得・削除, n = 99 / a = (22, 33, 44, 55, 66, 77, 88)
■連結と抽出
配列同士は、concat メソッドを使うと簡単に連結させることができます。また、slice メソッドでは、配列の一部分を抽出することができます。この時、引数に指定する最後の要素(下記の引数 end)は含まれません。これらは、いずれも戻り値を取得して利用します。元の配列には変化がありませんので注意が必要です。
また、join メソッドでは、各要素を指定した文字列で連結することができます。文字列を指定しない時は "," が使用されます。
// JavaScript Source
var a1 = new Array(11, 22, 33);
var a2 = new Array(44, 55, 66);
var a3 = new Array(77, 88, 99);
var ax = a1.concat(a2, a3); // 配列の連結, ax = (11, 22, 33, 44, 55, 66, 77, 88, 99)
var az = ax.slice(1, 7); // 配列の抽出, az = (22, 33, 44, 55, 66, 77)
var as = az.join(":"); // 文字列として連結, as = "22:33:44:55:66:77"
■並べ替え
並べ替えには sort メソッドを利用します。このメソッドを使用すると、要素が昇順にしたがって並べ替えられます。要素が数値であれば小さい順で、文字列であれば使用されている文字コードの順となります。ただし、引数に並び順を指定する比較関数を指定することができます。この比較関数は、正、負、0 のいずれかの値を返すものでなければなりません。
また、reverse メソッドは、配列の順番を逆にするものです。この二つを連続使用することで、降順ソートを実現することができます。 なお、これらは元の配列に対して並べ替えが行われます。戻り値を取得することもできますが、実体は元の配列そのものとなります。
// 昇順ソート
var a = new Array(33, 66, 99, 11, 44, 77, 22, 55, 88);
a.reverse(); // 反転ソート, a = (88, 55, 22, 77, 44, 11, 99, 66, 33)
a.sort(); // 昇順ソート, a = (11, 22, 33, 44, 55, 66, 77, 88, 99)
// 降順ソート
var a = new Array(33, 66, 99, 11, 44, 77, 22, 55, 88);
a.sort().reverse(); // 降順ソート, a = (99, 88, 77, 66, 55, 44, 33, 22, 11)
// 比較関数を使用
function Compare(a, b) {
return b-a; // b-a が負なら並べ替えが行われる
}
var a = new Array(44, 22, 77, 55, 88, 66, 33);
a.sort(Compare); // 比較関数でソート, a = (88, 77, 66, 55, 44, 33, 22)
|
|||||||||||||||||||||||||||||||||||||||||||||
www.sasaraan.net |
(c) morijoh |
||||||||||||||||||||||||||||||||||||||||||||