配列

ショッピングカート、スコアのリスト、グループチャットの全員の名前があるとします。変数1つが値1つを保持するので、このような方法でリストを保存することは、別の名前がたくさん必要になります:price1、price2、price3など、ループする方法やいくつあるかを確認する方法がありません。配列はそれを解決します。単一の名前の下に順序付けられた値のリストを保持し、独自の長さを知っているので、リストに追加したり、任意の項目を読み取ったり、全体をわずか数行で歩くことができます。
配列を作成して読み取る
**配列**は値の順序付きリストです。角括弧で記述し、値はカンマで区切ります:
const prices = [4, 9, 2, 7];これは1つの変数pricesで、4つの数字を保持しています。単一の値を読み取るには、その位置(インデックスと呼ばれます)を角括弧で使用します。最初はほぼ全員を悩ませるポイント:カウントは1ではなく0から始まります。
const names = ["太郎", "花子", "次郎"];
console.log(names[0]); // 太郎
console.log(names[1]); // 花子配列に何個の項目があるかを確認するには、.lengthを使用します:
console.log(names.length); // 3カウントは0から始まるため、最後の項目はlength - 1に置かれています。lengthではありません。したがって、ここで最後の名前はnames[2]であり、names[3]は終わりを越えます。
names[0]でその位置で項目を読み取り、カウントは0から始まるため、最初の項目は[0]であることを覚えてください、[1]ではなく。その0は1週間私を悩ませたので、リストが1つオフの場合は常にチェックしてください。.lengthを使用して項目をカウントし、最後のものはlength - 1に住んでいます。 配列を変更する
配列は変更を予定して作られています。最も到達する2つは最後に追加または削除します:pushは項目を追加し、popは最後のものを削除します。
const cart = ["apples", "bread"];
cart.push("milk");
console.log(cart); // ["apples", "bread", "milk"]
cart.pop();
console.log(cart); // ["apples", "bread"]マッチングペアは開始で機能します:unshiftは前に追加し、shiftは最初の項目を削除します。
cart.unshift("eggs");
console.log(cart); // ["eggs", "apples", "bread"]インデックスに割り当てることで項目を直接置き換えることもできます:
cart[0] = "bananas";
console.log(cart); // ["bananas", "apples", "bread"]何かを見つけるには、includesははいまたはいいえを教え、indexOfはそれがどこにあるか(またはそこにない場合は-1)を教えます:
console.log(cart.includes("apples")); // true
console.log(cart.indexOf("bread")); // 2初期に知る価値がある1つのこと:const配列は依然として変更できます。 constは名前cartを全新しい配列に再割り当てするのを止めますが、指し示すリストは依然としてpush、pop、インデックス割り当てのために開いています。
pushとpopは最後に追加・削除します。unshiftとshiftは同じ開始を行います。cart[0] = "bananas"のようにインデックスに割り当てて項目を置き換え、includesまたはindexOfを使用して見つけます。私を驚かせた部分:const配列は依然として変更でき、constは全新しい配列のために全配列をスワップするのを止めるだけだからです。 配列をループする
リストを取得したら、通常はすべての項目で何かをしたいと思います。配列を読み通す最もクリーンな方法はfor...ofで、一度に1つの項目をあなたに与えます:
const prices = [4, 9, 2, 7];
for (const price of prices) {
console.log(price);
}
// 4
// 9
// 2
// 7インデックスやカウンターを管理する必要はありません。for...ofはあなたに順序で各値を与え、あなたはそれをどのように名付けるかについて(price)好みのように命名します。すでにループに会った場合、これは配列にとって最も親切なものです。
forEachもあり、各項目に対して小さな関数を1回実行します:
const names = ["太郎", "花子", "次郎"];
names.forEach(function (name) {
console.log("Hi " + name);
});両方とも全配列を歩きます。読みをクリーンに読みたいときはfor...ofに到達し、配列を変換することを学ぶときはforEachと従兄弟に再び会うでしょう。
for...ofは配列を歩く明確な方法です:それはあなたに順序で各項目を与え、あなたは決してインデックスに触れません。forEachは各項目に対して小さな関数を1回実行し、これは便利です。両方は全リストを通り抜けるため、それを直線的に読みたいときにfor...ofを選ぶとします。配列を変換することを学ぶと、より多くの配列ツールが表示されます。 配列は参照によって保持される
ここは人々を驚かせる動作なので、初期に見る価値があります。配列変数を別の名前にコピーすると、2番目の配列は取得しません。両方の名前が同じものを指しています。
const original = [1, 2, 3];
const copy = original;
copy.push(4);
console.log(original); // [1, 2, 3, 4]copyにプッシュするのはoriginalを変更しました。配列は1つだけだからです。=は2番目の名前に、新しいコピーではなく、同じリストを与えました。これは、配列が参照によって保持されていることを意味するとき、人々が言っていることです:変数はリストそのもので、リストへのポインタを保持します。
実際の、独立したコピーを取得するには、...で配列を新しいものに拡散します:
const original = [1, 2, 3];
const copy = [...original];
copy.push(4);
console.log(original); // [1, 2, 3]、触れられない=で配列変数をコピーするのは2番目の配列を作成しません。両方の名前が同じものを指します。これは一度以上私を噛んだ。独立したコピーを希望するときは、[...original]で拡散させてください。これはあなたが独立して変更できるフレッシュな配列を構築します。 配列がここからどこに進むか
配列は1つの名前の下に順序付きリストを与えます:[]で作成し、0からインデックスで読み取り、pushとpopで変更し、for...ofで歩きます。この章の過去を運ぶ1つの考えは、配列が参照により保持されるため、変数をコピーすると、それを複製するのではなく、リストを共有することです。
自然な次のステップは1つの配列を別の配列に変えること、リストをフィルタリング、全ての項目を変換、すべてを追加し、ループを手で書かずに。それは配列メソッドです。位置ではなく名前で値を検索する必要があるときは、オブジェクトはそのための構造です。

