0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Javascript基本集(2)~配列~

Last updated at Posted at 2020-03-27

#Javascript基本集(配列)

####自分の学習用です

##配列宣言
配列の宣言には2種類の方法がある。

① 配列コンストラクタ「Array」を使う方法
 ~ 「new」を使ってArray()の引数へ格納したい文字列を設定する ~

② 配列リテラル「[ ]」を使う方法
 ~ []を使ってそのまま文字列を設定する ~

//①配列コンストラクタの例
var array1 = new Array('いぬ', 'さる', 'きじ');
 
//②配列リテラルの例
var array2 = ['いぬ', 'さる', 'きじ'];
 
console.log( array1 );
console.log( array2 );

実行結果


["いぬ", "さる", "きじ"]
 
["いぬ", "さる", "きじ"]

  
  
コントラクタとリテラルでの相違点

var array1 = new Array(5);
var array2 = [5];
 
console.log( array1 );
console.log( array2 );

実行結果

1. [empty × 5] //コントラクタ
2. 
3. [5] //リテラル

配列コンストラクタで「new Array(5)」と記述すると「5つ分の配列要素を用意する」という意味になる。
配列リテラルで「[5]」と記述すると「5という数値を配列に格納する」という意味になる。

JavaScriptで配列を宣言(作成)する時は、特に理由がない限り「配列リテラル」を使うように

##配列の初期化


var array = [];
 
console.log( array );

実行結果

[]

  
##『配列』操作
例題

var a = ["aa","bb"];
var b = ["EE","FF"];
var c = [1,5,7,3];

###よく使う命令

意味 使い方 説明
indexOf() 配列の要素を検索 a.indexOf(1); 2番目の要素が表示される
length 配列の要素の個数 x = a.length; 変数『x』に『2』が入る
push(array) 配列を末尾に追加 a.push(b); 変数『a』が『"aa","bb","EE","FF"』になる
push(値) 値を末尾に追加 a.push("cc"); 変数『a』が『"aa","bb","cc"』になる
unshift(array) 配列を先頭に挿入 a.unshift(b); 変数『a』が『"EE","FF","aa","bb"』になる
unshift(値) 値を先頭に挿入 a.unshift("cc"); 変数『a』が『"cc","aa","bb"』になる
pop() 末尾の要素を削除 a.pop() 変数『a』が『"aa"』になる
shift() 先頭の要素を削除 a.shift() 変数『a』が『"bb"』になる
concat(array) 連結した配列 x = a.concat(b); 変数『x』に『"aa","bb","EE","FF"』が入る
sort() 小さい順に並び替える c.sort(); 変数『c』が『1,3,5,7』になる
reverse() 逆向きに並び替える c.reverse(); 変数『c』が『3,7,5,1』になる
join("文字列") 配列を文字列で連結 x = a.join("/"); 変数『x』に『aa/bb』が入る
toString() 配列を文字列にする x = a.toString(); 変数『x』に『aa,bb』が入る
map 配列の要素一つ一つにコールバック関数を実行する c.map(function(value){return value * 2;}); 『2,10,14,6』となる
filter 対象となるデータに特定の条件を与えて、それに該当するデータだけを抽出 c.filter(function(value){return value > 6;}) 『7』が抽出される

###mapについては、3つの引数を取得することができる

例えば、

配列データ.map( function( value, index, array ) {
 
});

・「value」は、配列の値
・「index」は、配列のインデックス番号
・「array」は、現在処理している配列

引数の「index」を使って、偶数の「Index番号」の時だけ値を2倍にするパターン

var items = [1,2,3,4,5,6,7,8,9];
 
var result = items.map( function( value, index, array ) {
 
    //「index番号」が偶数の時だけ2倍にする
    if( index % 2 !== 0 ) {
        return value * 2;
    }
    else {
        return value;
    }
});
 
console.log( result );

実行結果

[1, 4, 3, 8, 5, 12, 7, 16, 9]

「map」は元の配列データに一切変更を加えない特徴がありますが、3つ目の引数「array」を利用すれば、元のデータを変更することも可能

var items = [1,2,3,4,5,6,7,8,9];
 
items.map( function( value, index, array ) {
 
    //「array」と「index」を利用して、元の配列データを変更する
    array[index] = value * 2;
 
});
 
//元の配列データを出力する
console.log( items );

実行結果

[2, 4, 6, 8, 10, 12, 14, 16, 18]

第2引数のオブジェクトについて
第2引数に任意の「オブジェクト」を指定することが出来る

var array = [ 配列データ ];
 
//第2引数にオブジェクトを指定
array.map( コールバック関数, オブジェクト );

例題(オブジェクトから任意のキーワードを指定して「価格」を返す)

var foodList = {
  'オムライス': 450,
  '焼きそば': 500,
  'お好み焼き': 600,
  '焼き飯': 400
};
 
//任意のキーワードを指定する
var order = ['焼き飯', 'お好み焼き'];
 
var result = order.map( function( value, index, array ) {
 
//配列のキーワードを使ってオブジェクト内の値を取得する
    return this[value];
 
}, foodList );
 
console.log( result );

実行結果

[400, 600]

第2引数へ「foodList」と記述することで、コールバック関数内の「this」が「foodList」を参照できるようになる

今回はここまで:santa:

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?