JavaScriptの配列操作についての整理
JavaScriptでの配列操作を使う機会が多いが、毎回ググってる気がするのでひとまずよく使うものについて整理してみる。
配列操作
const arr1 = [10, 20, 30];
const arr2 = [40, 50, 60];
const arrObj = [
{
id: 1,
name: "A"
},
{
id: 2,
name: "B"
},
{
id: 3,
name: "C"
},
{
id: 4,
name: "D"
},
{
id: 5,
name: "E"
},
{
id: 6,
name: "F"
}
];
length
配列の要素数を取得する 返り値:number
const arr1 = [10, 20, 30];
console.log("length", arr1.length);
// => length 3
indexOf
見つかった最初の要素の添字を返す、見つからなかった場合は-1を返す 返り値:number
const arr1 = [10, 20, 30];
console.log("indexOf", arr1.indexOf(20));
// => indexOf 1
console.log("indexOf", arr1.indexOf(40));
// => indexOf -1
join
全要素を順に連結した文字列を新たに作成 区切り文字を指定できる 返り値:string
const arr1 = [10, 20, 30];
console.log("join", arr1.join());
// => join 10,20,30
slice
配列のすべてまたは一部をコピーする 返り値:Array
const arr1 = [10, 20, 30];
console.log("slice", arr1.slice(2));
// => slice [30]
concat
配列同士を結合 返り値:Array
const arr1 = [10, 20, 30];
const arr2 = [40, 50, 60];
console.log("concat", arr1.concat(arr2));
// => concat [10, 20, 30, 40, 50, 60]
reverse
逆順 返り値:Array
const arr1 = [10, 20, 30];
console.log("reverse", arr1.reverse());
// => reverse [30, 20, 10]
sort
並び替え 返り値:Array
const arr1 = [10, 20, 30];
console.log("sort", arr1.sort()); // 昇順
console.log(
"sort",
arr1.sort((x, y) => y - x)
); // 降順
// => sort [30, 20, 10]
map
新しい配列を生成 全ての要素に対して関数を一度ずつ実行,新しい配列を生成 返り値:Array
console.log(
"map",
arrObj.map((item) => ({ id: item.id + "_map", name: item.name + "_map" }))
);
// => map [{id: "1_map",name: "A_map"} ...]
filter
絞り込み(複数要素) true を返した要素からなる新しい配列を生成 返り値:Array
console.log(
"filter",
arrObj.filter((item) => item.id % 2 === 0)
);
// filter [{id:2, name: "A"},{id:4, name: "D"},{id:6, name: "F"}]
find
絞り込み(1要素) true を返す要素が見つかるまで、要素に対して一度ずつ関数を実行する 返り値: Arrayの1要素
console.log(
"find",
arrObj.find((item) => item.id === 5)
);
// => find {id: 5, name: "E"}
some
true
を返す要素が見つかるまで、要素に対して一度ずつ関数を実行,1つでもtrue
を返す要素が見つかると、 true
を返す。 返り値: boolean
console.log(
"some",
arrObj.some((item) => item.id === 5)
);
// => some true
every
false
を返す要素が見つかるまで、要素に対して一度ずつ関数を実行,false を返す要素が見つかると、 false
を返す。すべてがtrue
であればtrue
を返す 返り値: boolean
console.log(
"every",
arrObj.every((item) => item.id !== null)
);
// every false
reduce
配列を繰り返し処理し、計算結果を返す 返り値:計算結果
console.log(
"reduce",
arr1.reduce((prev, current, index) => prev + current)
);