![トモジのアイコン画像](https://10moji-blog.com/wp-content/uploads/2020/08/吹き出しトモジ.png)
Arrayオブジェクトって何?
詳しく知りたい・・
本記事は、
上記のような方に向けて記事を書いています。
こんにちは、トモジです。
私はプログラミング未経験から独学で勉強して、
簡易的な動的サイト・ゲーム・サービスが作れる状態になりました。
本記事は、Arrayオブジェクトに関して要点を
わかりやすく説明しております。
1.JavaScriptのArrayオブジェクト
Arrayオブジェクトは、
配列型の値を扱うためのオブジェクトで
要素を[追加]・[削除]・[結合]・[並べ替え]などを
行うための機能が提供されております。
非常にたくさんの機能が提供されておりますので、
今回は後編(みどり枠)を順番に説明します。
![Arrayオブジェクト一覧の図](https://10moji-blog.com/wp-content/uploads/2020/12/f834384ea6ac60d77538d8bdf8adc28f-1024x1006.png)
2.追加/削除
Arrayオブジェクトの追加/削除は、
以下の4種類のメンバーがありますので
順番に見ていきましょう。
![Arrayオブジェクトの追加/削除類の図](https://10moji-blog.com/wp-content/uploads/2020/12/d9a45754117deeeda0eb1a2740553a21-1024x608.png)
pop
popは、配列末尾の要素を取得して削除します。
![popの説明図](https://10moji-blog.com/wp-content/uploads/2020/12/pop-3-1024x942.png)
popに関して
var ary = ["総統", "吉田くん", "フィリップ"];
console.log('pop(取得) : ' + ary.pop());
console.log('ary(pop後) : ' + ary);
pop(取得) : フィリップ
ary(pop後) : 総統,吉田くん
push
pushは、配列末尾に要素を追加します。
![pushの説明図](https://10moji-blog.com/wp-content/uploads/2020/12/push-1-1024x942.png)
pushに関して
var ary = ["総統", "吉田くん"];
console.log('push(追加) : ' + ary.push("フィリップ"));
console.log('ary(push後) : ' + ary);
push(追加) : 3
ary(push後) : 総統,吉田くん,フィリップ
shift
shiftは、配列先頭の要素を取得して削除します。
![shiftの説明図](https://10moji-blog.com/wp-content/uploads/2020/12/shift-1-1024x942.png)
shiftに関して
var ary = ["総統", "吉田くん", "フィリップ"];
console.log('shift(先頭削除) : ' + ary.shift());
console.log('ary(shift後) : ' + ary);
shift(先頭削除) : 総統
ary(shift後) : 吉田くん,フィリップ
unshift
unshiftは、配列先頭に指定要素を追加します。
![unshiftの説明図](https://10moji-blog.com/wp-content/uploads/2020/12/unshift-1-1024x942.png)
unshiftに関して
var ary = ["フィリップ"];
console.log('unshift() : ' + ary.unshift("総統", "吉田くん"));
console.log('ary(unshift後) : ' + ary);
unshift() : 3
ary(unshift後) : 総統,吉田くん,フィリップ
3.並び替え
Arrayオブジェクトの並び替えは、
以下の2種類のメンバーがありますので
順番に見ていきましょう。
![Arrayオブジェクトの並び替え類の図](https://10moji-blog.com/wp-content/uploads/2020/12/9a3a45b93776eb35b5662a951aa7e8e6-1024x422.png)
reverse
reverseは、配列の順番を反転します。
![severseの説明図](https://10moji-blog.com/wp-content/uploads/2020/12/reverse-1024x942.png)
reverseに関して
var ary = ["総統", "吉田くん", "フィリップ"];
console.log('reverse : ' + ary.reverse());
reverse : フィリップ,吉田くん,総統
sort
sortは、要素を昇順に並び替えます。
![sortの説明図](https://10moji-blog.com/wp-content/uploads/2020/12/sort-1024x942.png)
sortに関して
var ary = ["総統", "吉田くん", "フィリップ"];
console.log('sort(昇順) : ' + ary.reverse());
sort(昇順) : フィリップ,吉田くん,総統
4.コールバック
Arrayオブジェクトのコールバックは、
以下の9種類のメンバーがありますので
順番に見ていきましょう。
![Arrayオブジェクトのコールバック類の図](https://10moji-blog.com/wp-content/uploads/2020/12/d394e0725e8492be86d5659d313d2c63-1024x799.png)
forEach
forEachは、
配列要素のループ処理(繰り返し処理)で使用し、
for文よりも記述が見やすくなります。
![forEachの説明図2](https://10moji-blog.com/wp-content/uploads/2020/12/forEach-1-1024x942.png)
![forEachの説明図1](https://10moji-blog.com/wp-content/uploads/2020/12/a9bfeb433e051859ee65f641e9826c69-1-1024x942.png)
forEachに関して
var ary = ["総統", "吉田"];
ary.forEach( function( value , index , array ) {
array[index] = value + 'さん';
});
console.log('forEach(さん付け) : ' + ary);
forEach : 総統さん,吉田さん
forEachとforの比較
以下の2つのコードを比較していただきたいのですが、少しfor文の方わかりにくですね。
forEachの場合
var ary = ["りんご", "ゴルゴ", "パンツ"];
ary.forEach( function( value ) {
console.log('forEach : ' + value);
});
forEach : りんご
forEach : ゴルゴ
forEach : パンツ
forの場合
var ary = ["りんご", "ゴルゴ", "パンツ"];
for( var i = 0; i < ary.length; i++) {
console.log('for : ' + ary[i] );
}
for : りんご
for : ゴルゴ
for : パンツ
map
mapは、配列要素1つずつに対して処理をして新しい配列を作成します。
![mapの説明図2](https://10moji-blog.com/wp-content/uploads/2020/12/map-1-1024x942.png)
![mapの説明図1](https://10moji-blog.com/wp-content/uploads/2020/12/b81658e57542029a8b92c33f1a114843-2-1024x942.png)
mapに関して
var ary = ["総統", "吉田"];
var newAry = ary.map(function(value, index) {
return '[' + index + ']'+value + 'さん';
});
console.log('map : ' + newAry);
console.log('ary : ' + ary);
map : [0]総統さん,[1]吉田さん
ary : 総統,吉田
every
everyは、特定の条件を
配列のすべての要素が満足する場合は true、
そうでなければ false を返します。
![everyの説明図2](https://10moji-blog.com/wp-content/uploads/2020/12/every-1024x942.png)
![everyの説明図1](https://10moji-blog.com/wp-content/uploads/2020/12/ee08b80751732152ca43a1267756b99c-1-1024x942.png)
everyに関して
var num = [0, 10, 20, 30, 40];
var result = num.every(function(value, index) {
console.log('index[' + index + '] : ' + value);
return (value < 30);
});
console.log('every : ' + result);
index[0] : 0
index[1] : 10
index[2] : 20
index[3] : 30
every : false
some
someは、特定の条件を
配列のいずれかの要素が満足する場合は true、
そうでなければ false を返します。
![someの説明図2](https://10moji-blog.com/wp-content/uploads/2020/12/some-1024x942.png)
![someの説明図1](https://10moji-blog.com/wp-content/uploads/2020/12/ac46c228707da9725bf6e22485209e7c-1024x942.png)
someに関して
var num = [0, 10, 20, 30, 40];
var result = num.some(function(value, index) {
console.log('index[' + index + '] : ' + value);
return (value > 20);
});
console.log('some : ' + result);
index[0] : 0
index[1] : 10
index[2] : 20
index[3] : 30
some : true
filter
filterは、条件に合致した要素を取り出し
新しい配列を作成します。
![filterの説明図2](https://10moji-blog.com/wp-content/uploads/2020/12/filter-1024x942.png)
![filterの説明図1](https://10moji-blog.com/wp-content/uploads/2020/12/fe4b8d4c5648cb72a89d8bec134ed47c-1024x942.png)
filterに関して
var num = [0, 5, 10, 15, 20];
var result = num.filter(function(value) {
return value % 2 === 1;
});
console.log('filter(奇数) : ' + result);
filter(奇数) : 5,15
find
findは、
初めて条件に合致した要素を取り出します。
![findの説明図2](https://10moji-blog.com/wp-content/uploads/2020/12/find-1-1024x942.png)
![findの説明図1](https://10moji-blog.com/wp-content/uploads/2020/12/b6aa214d97a5bf79368c2df8ce95e06b-1024x942.png)
findに関して
var num = [0, 5, 10, 15, 20];
var result = num.find(function(value) {
return value % 2 === 1;
});
console.log('find : ' + result);
find : 5
findIndex
findIndexは、初めて条件に合致した要素の
インデックス番号を取得します。
![findIndexの説明図2](https://10moji-blog.com/wp-content/uploads/2020/12/findIndex-1024x942.png)
![findIndexの説明図1](https://10moji-blog.com/wp-content/uploads/2020/12/e73c604e1c6c34c196ef6e7640bcff60-1024x942.png)
findIndexに関して
var num = [0, 5, 10, 15, 20];
var result = num.findIndex(function(value) {
return value % 2 === 1;
});
console.log('findIndex : ' + result);
findIndex : 1
reduce
reduceは、配列データの各要素を累積して
1つの値にする用途に最適なメソッドになります。
![reduceの説明図2](https://10moji-blog.com/wp-content/uploads/2020/12/reduce-1024x942.png)
![reduceの説明図1](https://10moji-blog.com/wp-content/uploads/2020/12/84ff51a10dd4f5fc522d0e1f74713e4b-1024x942.png)
reduceに関して
var numbers = [5,9,6,3];
var result = numbers.reduce(function(accumulator, currentValue, index, array) {
console.log('accumulator(累積値) : ' + accumulator);
console.log('currentValue(要素) : ' + currentValue);
console.log('index(配列番号) : ' + index);
console.log('array(配列) : ' + array);
console.log('===================');
return accumulator + currentValue;
},10);
console.log('配列合計値 : ' + result);
accumulator(累積値) : 10
currentValue(要素) : 5
index(配列番号) : 0
array(配列) : 5,9,6,3
===================
accumulator(累積値) : 15
currentValue(要素) : 9
index(配列番号) : 1
array(配列) : 5,9,6,3
===================
accumulator(累積値) : 24
currentValue(要素) : 6
index(配列番号) : 2
array(配列) : 5,9,6,3
===================
accumulator(累積値) : 30
currentValue(要素) : 3
index(配列番号) : 3
array(配列) : 5,9,6,3
===================
配列合計値 : 33
reduceRight
reduceRightは、隣り合う 2 つの配列要素に対して
(右から左へ) 関数を適用して、単一の値にします。
reduceRightに関して
var numbers = [5,9,6,3];
var result = numbers.reduceRight(function(accumulator, currentValue, index, array) {
console.log('accumulator(累積値) : ' + accumulator);
console.log('currentValue(要素) : ' + currentValue);
console.log('index(配列番号) : ' + index);
console.log('array(配列) : ' + array);
console.log('===================');
return accumulator + currentValue;
},10);
console.log('配列合計値 : ' + result);
accumulator(累積値) : 10
currentValue(要素) : 3
index(配列番号) : 3
array(配列) : 5,9,6,3
===================
accumulator(累積値) : 13
currentValue(要素) : 6
index(配列番号) : 2
array(配列) : 5,9,6,3
===================
accumulator(累積値) : 19
currentValue(要素) : 9
index(配列番号) : 1
array(配列) : 5,9,6,3
===================
accumulator(累積値) : 28
currentValue(要素) : 5
index(配列番号) : 0
array(配列) : 5,9,6,3
===================
配列合計値 : 33
まとめ
最後にこの記事のポイントをまとめておきます。
追加/削除
pop
配列末尾の要素を取得して削除push
配列末尾に要素を追加shift
配列先頭の要素を取得して削除unshift
配列先頭に指定要素を追加
並び替え
reverse
配列の順番を反転sort
要素を昇順に並び替え
コールバック
forEach
配列要素のループ処理map
配列要素を順に加工every
要素が条件に全て合致するか確認some
要素が条件にいずれか合致するか確認filter
条件に合致した要素を取り出し配列生成find
初めて条件に合致した要素を取り出しfindIndex
初めて合致したインデックス番号を取得reduce
配列データ要素を累積して1つの値にするreduceRight
配列データ要素を累積して1つの値にする