第7章 配列

配列の基本

配列の宣言と初期化

let fruits = ["apple", "orange", "banana"];
console.log(fruits[0]);  // "apple"

要素の追加と取得

fruits[3] = "grape";
console.log(fruits[3]);  // "grape"

配列の長さ

console.log(fruits.length);  // 4


配列の操作

末尾に要素を追加

fruits.push("cherry");
console.log(fruits);  // ["apple", "orange", "banana", "grape", "cherry"]

末尾の要素を取り除く

fruits.pop();
console.log(fruits);  // ["apple", "orange", "banana", "grape"]

先頭に要素を追加

fruits.unshift("kiwi");
console.log(fruits);  // ["kiwi", "apple", "orange", "banana", "grape"]

先頭の要素を取り除く

fruits.shift();
console.log(fruits);  // ["apple", "orange", "banana", "grape"]


配列の反復処理

forEachを使った繰り返し

fruits.forEach(function(fruit) {
    console.log(fruit);
});


配列の検索とフィルタリング

要素の検索

let index = fruits.indexOf("banana");
console.log(index);  // 2

条件に合致する要素の検索

let found = fruits.find(fruit => fruit.length > 5);
console.log(found);  // "orange"


配列の変形

mapを使った配列の変形

let lengths = fruits.map(fruit => fruit.length);
console.log(lengths);  // [5, 6, 6, 5]

filterを使った要素のフィルタリング

let longFruits = fruits.filter(fruit => fruit.length > 5);
console.log(longFruits);  // ["orange", "banana"]


配列と文字列の相互変換

配列を文字列に変換

let fruits = ["apple", "orange", "banana"];
let fruitStr = fruits.join(", ");
console.log(fruitStr);  // "apple, orange, banana"

文字列を配列に変換

let animals = "cat,dog,rabbit";
let animalArray = animals.split(", ");
console.log(animalArray);  // ["cat", "dog", "rabbit"]


配列の逆順とソート

配列の要素を逆順に

let numbers = [1, 2, 3, 4];
numbers.reverse();
console.log(numbers);  // [4, 3, 2, 1]

配列のソート

fruits.sort();
console.log(fruits);  // ["apple", "banana", "grape", "orange"]

カスタム比較関数を使用してのソート

let numbers = [10, 5, 40, 25, 100];
numbers.sort((a, b) => a - b);  // 昇順にソート
console.log(numbers);  // [5, 10, 25, 40, 100]


配列の結合と切り出し

配列の結合

let vegetables = ["carrot", "broccoli"];
let foods = fruits.concat(vegetables);
console.log(foods);  // ["apple", "orange", "banana", "grape", "carrot", "broccoli"]

配列のスライス

let subFruits = fruits.slice(1, 3);
console.log(subFruits);  // ["orange", "banana"]


配列の中の配列(2次元配列)

2次元配列の宣言とアクセス

let matrix = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
];
console.log(matrix[1][2]);  // 6


スプレッド構文を利用した配列操作

スプレッド構文を使った配列のコピーと結合

let matrix = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
];
console.log(matrix[1][2]);  // 6


その他のメソッド

配列内の要素の存在確認

let colors = ["red", "blue", "yellow"];
console.log(colors.includes("blue"));  // true
console.log(colors.includes("green")); // false

一部の要素が条件を満たすか

let numbers = [1, 3, 5, 7, 9];
console.log(numbers.some(num => num % 2 === 0));  // false (偶数はない)

すべての要素が条件を満たすか

console.log(numbers.every(num => num % 2 !== 0));  // true (すべて奇数)


練習問題1.

以下の配列の要素の合計を計算して、結果を出力してください。

let numbers = [5, 7, 2, 9, 4];


練習問題2.

以下の配列から、最も長い文字列を見つけて出力してください。

let fruits = ["apple", "banana", "cherry", "pineapple", "grape"];


練習問題3.

以下の2つの配列を逆の順番にして、1つの配列に結合してください。その後、結果を出力してください。

let arr1 = [1, 2, 3];
let arr2 = [4, 5, 6];