JavaScript よく使う配列メソッド

個人的によく使うJavaScriptの配列メソッドをまとめました。

ループ処理

forEach / map / filter

全要素について処理を実施(中断しない)

forEach(コールバック関数)
for文の代用
新しい配列 = map(コールバック関数)
コールバック関数が返した値を新しい配列に格納
新しい配列 = filter(コールバック関数)
trueを返す要素のみを新しい配列に格納
const items = ["A", "B", "C", "D", "E"];
items.forEach((value, index) => {
    console.log(value, index);
});
// A 0
// B 1
// C 2
// D 3
// E 4

const items1 = ["A", "B", "C", "D", "E"];
const label1 = items.map((value, index) => {
    return index + ": " + value;
});
console.log(label1); // ["0: A", "1: B", "2: C", "3: D", "4: E"]
console.log(items1); // ["A", "B", "C", "D", "E"]

const items2 = [{id: 1, name: "A"},
                {id: 2, name: "B"},
                {id: 3, name: "C"},
                {id: 4, name: "D"},
                {id: 5, name: "E"}];
const label2 = items2.map((item, index) => {
    return item.name;
});
console.log(label2); // ["A", "B", "C", "D", "E"]

const items3 = [{id: 1, name: "A"},
                {id: 2, name: "B"},
                {id: 3, name: "C"},
                {id: 4, name: "D"},
                {id: 5, name: "E"}];
const label3 = items3.filter((item, index) => {
    return item.id > 3;
});
console.log(label3); // [{id: 4, name: "D"}, {id: 5, name: "E"}]

要素の追加

push / unshift / splice

push(要素)
配列の一番後ろに追加(複数可)
unshift(要素)
配列の一番前に追加(複数可)
削除された要素 = splice(index, 削除する数, 追加する要素)
削除する数を0にすると追加のみ実施、元の配列が書き換わる
const items1 = ["A", "B", "C", "D", "E"];
items1.push("*");
console.log(items1); // ["A", "B", "C", "D", "E", "*"]

const items2 = ["A", "B", "C", "D", "E"];
items2.unshift("*");
console.log(items2); // ["*", "A", "B", "C", "D", "E"]

const items3 = ["A", "B", "C", "D", "E"];
items3.splice(1, 0, "*");
console.log(items3); // ["A", "*", "B", "C", "D", "E"]

要素の削除(取り出し)

pop / shift / splice

一番後ろの要素 = pop()
配列の一番後ろを取り出す、空の場合はundefined
一番前の要素 = shift()
配列の一番前を取り出す、空の場合はundefined
削除された要素 = splice(index, 削除する数, 追加する要素)
追加する要素を省略すると削除のみ、削除する数も省略するとindex以降をすべて削除、元の配列が書き換わる
const items1 = ["A", "B", "C", "D", "E"];
items1.pop();
console.log(items1); // ["A", "B", "C", "D"]

const items2 = ["A", "B", "C", "D", "E"];
items2.shift();
console.log(items2); // ["B", "C", "D", "E"]

const items3 = ["A", "B", "C", "D", "E"];
items3.splice(1, 2);
console.log(items3); // ["A", "D", "E"]

const items4 = ["A", "B", "C", "D", "E"];
items4.splice(2); // items4[2]以降を削除
console.log(items4); // ["A", "B"]

切り取り

slice

切り取った要素 = slice(開始index, 終了index(含まない))
終了indexを省略すると最後まで切り取り、開始indexも省略すると全要素切り取り(配列のコピー)、元の配列を書き換えない
const items1 = ["A", "B", "C", "D", "E"];
const parts1 = items1.slice(1, 2);
console.log(parts1); // ["B"]
console.log(items1); // ["A", "B", "C", "D", "E"]

const items2 = ["A", "B", "C", "D", "E"];
const parts2 = items2.slice(1); // items2[1]以降を切り取り
console.log(parts2); // ["B", "C", "D", "E"]
console.log(items2); // ["A", "B", "C", "D", "E"]

Memo

直訳

  • splice … 解いて組み継ぎする、つなぎ合わせる
  • slice … 切る、切り取る
見つけた要素のindex = indexOf(探す要素, 検索開始index)
検索開始indexは省略可、見つからない場合は-1を返す
見つけた要素のindex = lastIndexOf(探す要素, 検索開始index)
検索開始indexは省略可、見つからない場合は-1を返す
見つけた要素のindex = findIndex(コールバック関数)
コールバック関数がtrueを返すまで検索、見つからない場合は-1を返す
見つけた要素 = find(コールバック関数)
コールバック関数がtrueを返すまで検索、見つからない場合はundefinedを返す
const items = ["A", "B", "C", "B", "A"];

const index1 = items.indexOf("B"); // indexOf(探す値, 開始index)
console.log(index1);     // 1

const index2 = items.lastIndexOf("B"); // lastIndexOf(探す値, 開始index)
console.log(index2);     // 3

const index3 = items.findIndex(value => value === "B"); // findIndex(callback)
console.log(index3);     // 1

const found = items.find(value => value === "B"); // find(callback)
console.log(found);     // B

テスト判定

some / every

true or false = some(コールバック関数)
コールバック関数で1要素でもtrueを返す場合はtrue
true or false = every(コールバック関数)
コールバック関数で全要素がtrueを返す場合はtrue(1要素でもfalseを返す場合はfalse)
const items = [0, 0, 1, 0, 1];

const some1 = items.some(value => value === 1); // 0->0->1->break
console.log(some1);     // true

const every0 = items.every(value => value === 0); // 0->0->1->break
console.log(every0);    // false

ソート

sort

sort(比較関数)
比較関数の戻り値の正負に従い要素を並べ替える
const items1 = [2, 0, 1, 4, 3];
items1.sort((a, b) =>  a - b);
console.log(items1);     // [0, 1, 2, 3, 4]

const items2 = [2, 0, 1, 4, 3];
items2.sort((a, b) =>  b - a);
console.log(items2);     // [4, 3, 2, 1, 0]

Memo

Array/Stringオブジェクトの同名メソッド

  • indexOf
  • lastIndexOf
  • slice

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA