06_JavaScript配列

1 配列についての最初の概要

名前、学生 ID、年齢など、クラス内のすべての生徒の関連情報を保存するにはどうすればよいですか?

  • 一つの方法は、以前に学習した知識を使用するため、各情報を保存するための変数が必要であり、非常に面倒でエラーが発生しやすく、非合理的であるという欠点があります。
  • もう 1 つの方法は、配列を使用することです。

配列は、一連の値を格納する変数のコレクションです。

配列の構成: 配列は 1 つ以上の配列要素で構成され、各要素はカンマ「,」で区切られます。

配列要素: 各配列要素は「添え字」と「値」で構成されます。

  • 添え字: インデックスとも呼ばれ、デフォルトでは 0 から始まり、順番に増加する数値で表され、要素を識別するために使用されます。
  • 値: 要素の内容。数値タイプ、文字タイプ、配列、オブジェクトなど、任意のタイプのデータを指定できます。

配列は、次元数に基づいて、1 次元配列、2 次元配列、3 次元配列などの多次元配列に分けることもできます。

  • 1 次元配列: 上図に示すように、配列の「値」が非配列型データであることを意味します。

  • 2 次元配列: 以下に示すように、配列要素の「値」が 1 次元配列であることを意味します。

  • 多次元配列: 配列の値も配列である場合、多次元配列を形成できます。通常、何らかの情報を説明するために使用されます。

クラスの生徒情報を保存します。各配列要素は生徒を表し、各生徒は 1 次元配列を使用して自分の名前、生徒番号、年齢、その他の情報を表します。このようにして、クラスの情報を定期的に保存できます。すべての学生情報は、開発中の処理に便利です。

2 配列を作成する

JavaScript での配列の作成方法:

  • Array オブジェクトをインスタンス化する方法は new Array() です。
  • 「[]」を直接使用してください。

2.1 Array オブジェクトを使用して配列を作成する

Array オブジェクトをインスタンス化して配列を作成するには、new キーワードを使用します。

// 元素值类型为字符串
var area = new Array('Beijing', 'Shanghai', 'Shenzhen');
// 元素值类型为数值型
var score = new Array(56, 68, 98, 44);
// 元素值类型为混合型
var mix = new Array(123, 'abc', null, true, undefined);
// 空数组
var arr1 = new Array();
var arr2 = new Array;

2.2 「[]」を使用して配列を作成する

ダイレクト メソッド "[]" は Array() オブジェクトと同様の方法で使用されます。new Array() を [] に置き換えるだけです。

var weather = ['wind', 'fine',]; // 相当于:new Array('wind', 'fine',)
var empty = [];                  // 相当于:new Array
// 控制台输出 mood:(5) ["sad", empty × 3, "happy"]
var mood = ['sad', , , ,'happy'];   
  • 配列を作成する場合、最後の要素の後のカンマは存在することも省略することもできます。
  • 配列作成時のダイレクト メソッド "[]" と Array() オブジェクトの違いは、前者は空の格納場所を持つ配列を作成できるのに対し、後者は作成できないことです。
  • パラメーターが 1 つしかない場合、結果は異なります。
var arr = [10];  //创建一个第一个值为10的数组
var arr1 = new Array(10);  //创建一个长度为10的数组
console.log(arr);
console.log(arr1);

3 配列の基本操作

3.1 配列の長さを取得する

Array オブジェクトによって提供される length プロパティは配列の長さを取得でき、その値は配列要素の最大添字に 1 を加えたものになります。

var arr1 = [78, 88, 98];
var arr2 = ['a', , , , 'b', 'c'];
console.log(arr1.length); // 输出结果为:3
console.log(arr2.length); // 输出结果为:6
  • 配列 arr2 に値のない配列要素は、空の記憶域を占有します。したがって、配列の添字は引き続きインクリメントされます。したがって、arr2 が length 属性を呼び出した場合の最終出力結果は 6 になります。

配列の長さプロパティは、配列の長さを取得するために使用できるだけでなく、配列の長さを変更することもできます。

length 属性を使用して配列の長さを指定する場合、次の 3 つの状況が考えられます。

  • 設定された長さ > 元の配列の長さ 長さの値が配列内の元の要素数より大きい場合、値のない配列要素は空の格納場所を占有します。
var arr1 = [];
arr1.length = 5;
console.log(arr1);      // 输出结果:(5) [empty × 5]
var arr2 = [1, 2, 3];
arr2.length = 4; 
console.log(arr2);      // 输出结果:(4) [1, 2, 3, empty]
  • 設定された長さ = 元の配列の長さ。長さの値が配列内の元の要素数と等しい場合、配列の長さは変更されません。
var arr3 = ['a', 'b'];
arr3.length = 2; 
console.log(arr3);      // 输出结果:(2) ["a", "b"]
  • 設定された長さ<元の配列の長さ。長さの値が配列内の元の要素数より小さい場合、余分な配列要素は破棄されます。
var arr4 = ['hehe', 'xixi', 'gugu', 'jiujiu'];
arr4.length = 3; 
console.log(arr4);      // 输出结果:(3) ["hehe", "xixi", "gugu"]

さらに、Array オブジェクト メソッドを使用して配列を作成する場合、配列の長さを指定することもできます。

var arr = new Array(3);
console.log(arr);      // 输出结果:(3) [empty × 3]

注: JavaScript で配列の長さを指定する方法に関係なく、配列への要素の継続的な追加には影響せず、配列の長さ属性値もそれに応じて変更されます。

3.2 配列のアクセスとトラバーサル

配列要素にアクセスする

配列要素のアクセス方法:「配列名[添字]」。

var fruit = ['苹果', '香蕉', '橘子'];
console.log(fruit[0]);
console.log(fruit[1]);
console.log(fruit[2]);
console.log(fruit[3]);

配列内に存在しないデータにアクセスした場合は、エラーの代わりに unknown が返されます。

配列要素を反復処理する

いわゆる配列のトラバーサルは、配列内のすべての要素に順次アクセスする操作です。

  • 添字を使用して配列を走査するには、for (ループ ステートメント) を使用できます。
  • 添字を使用して配列を走査するには、for...in ステートメントを使用できます。
for (variable in object) {
    
    ...}
  • for...in の変数は配列の添字を参照します。
  • for...in のオブジェクトは配列の変数名を表します。
  • さらに、 object がオブジェクトの場合、 for...in もオブジェクトの走査に使用できます。
var arr = [12, 59, 66];    // 待求和的二维数组
var sum = 0;
for (var j in arr) {
    
        // 遍历数组arr的元素
    sum += arr[j];        // 二维数组元素累计相加
}
ES6 の新機能…構文

ES6 では、配列の走査を容易にするために、新しい for...of 構文が追加されました。

var arr = [1, 2, 3];
for (var value of arr) {
    
    
   console.log(value);
}
  • 変数値: 走査されるたびに、対応する配列要素の値を表します。
  • 変数 arr: 走査される配列を表します。
  • 結果: 1、2、3 がコンソールに出力されます。
forEach は配列を走査します
  • 配列全体を順番に反復処理します
  • IE8以降またはその他のブラウザをサポート
  • 自分で作成したが自分で呼び出さない関数のことをコールバック関数といいます。

文法:

Array.forEach(function(value, index, arr){
    
     ... });
var arr = [2, 3, 4, 5, 6, 7]; 
arr.forEach(function(item, index, arr){
    
    
    //三个参数分别代表 item 当前遍历到的元素 index 当前遍历到的下标 arr 数组本身 
})

3.3 要素の追加と変更

要素の追加・変更方法:「配列名[添字]」。配列内の要素にアクセスするのと同じ方法です。

要素の追加
var height = [];
height[5] =  183;
height[0] =  175;
height[3] =  150;
console.log(height);
  • 配列要素を追加します: 配列名 [添え字] = 値。
  • 添字は数値以外の順序で連続して追加することができ、特定の値が設定されていない要素は空の格納場所として存在します。
  • 要素が配列に保存される順序は添え字に関連しており、要素が追加される順序とは関係ありません。
var arr = ['Asa','Taylor'];
arr[2] = 'Tom';
arr[3] =  'Jack';
console.log(arr);
要素を変更する

要素の変更は要素の追加と同じ方法で使用されますが、要素の変更では既に値が含まれている要素に値が再割り当てされる点が異なります。

var arr = ['a', 'b', 'c', 'd'];
arr[2] = 123;
arr[3] = 456;
console.log(arr);	

3.4 要素の削除

配列を作成した後、実際の状況に応じて配列内の要素値を削除する必要がある場合があります。

たとえば、クラス全体の生徒情報を格納する多次元配列です。このクラスの生徒が別の学校に転校する場合、その生徒は生徒情報を格納する配列から削除する必要があります。

このとき、delete キーワードを使用して配列要素の値を削除できます。

delete キーワードは、配列内の指定された添字の要素値のみを削除できます。削除後も、要素は空の格納場所を占有します。

var stu = ['Tom', 'Jimmy', 'Lucy'];
console.log(stu);	// 输出结果:(3) ["Tom", "Jimmy", "Lucy"]
delete stu[1];	// 删除数组中第2个元素
console.log(stu);	// 输出结果:(3) ["Tom", empty, "Lucy"]

3.5 代入の構造化

以前に学習した変数の宣言と代入の方法に加えて、ES6 では別の方法、つまり構造化代入も提供します。

たとえば、配列 [1,2,3] の要素がそれぞれ a、b、c に割り当てられている場合、従来のアプローチでは、変数を個別に宣言して値を割り当てます。

// 传统的做法
var arr = [1, 2, 3];
var a = arr[0];
var b = arr[1];
var c = arr[2];

// 解构赋值方式
[a, b, c] = [1, 2, 3];
  • 左側の変数の数が右側の要素の数より少ない場合、超過した要素は無視されます。
  • 左側の変数の数が右側の要素の数より大きい場合、超過した変数は未定義に初期化されます。
var arr = [1, 2, 3];
[a, b] = arr;
// 输出结果:1 - 2
console.log(a + ' - ' + b);   

var n1 = 4, n2 = 8;
[n1, n2] = [n2, n1];
// 输出结果:8 - 4
console.log(n1 + ' - ' + n2); 
  • 代入を分割する場合、右側の内容も変数にすることができます。
  • 2 つの変数の値の交換は、構造化代入によって完了します。

3.6 課題の練習

  • 最大値と最小値を求め、5科目の得点を入力し、合計点、平均点、最高点、最低点を求めます。
    • 検索対象となる配列の最初の要素が最大値 max と最小値 min であるとします。
    • 配列の 2 番目の要素から開始して配列を繰り返します。
    • 配列を走査するときに、現在の要素が max より大きいかどうかを判断し、大きい場合は max 値を変更します。
    • 同様に、配列を走査するときに、現在の要素が最小値より小さいかどうかを判断し、小さい場合は最小値を変更します。
  • 配列内の指定された要素のインデックスを返します。

4 一般的な 2 次元配列演算

4.1 作成と走査

1 次元配列の作成方法を理解すれば、2 次元配列の作成は非常に簡単で、配列の要素を配列に設定するだけです。

// 使用Array对象创建数组
var info = new Array(new Array('Tom', 13, 155), new Array('Lucy', 11, 152));
var arr = new Array(new Array, new Array);// 空二维数组
// 使用“[]”创建数组
var num = [[1, 3], [2, 4]];
var empty = [[], []];		            // 空二维数组

2 次元配列を作成した後、2 次元配列内の要素を走査して操作するにはどうすればよいでしょうか?

  • 1 次元配列は、for、for...in、または for...of (ES6 によって提供される) を使用して走査できます。
  • 2 次元配列の場合、配列を走査した後で配列の要素を再度走査するだけで済みます。

Web プロジェクト開発では、多次元の空の配列に要素を追加することによって多次元配列が作成されることがよくあります。

var arr = [];	   // 创建一维空数组
for(var i = 0 ; i< 3; ++i){
    
    
    arr[i] = []; 	  // 将当前元素设置为数组
    arr[i][0] = i;	  // 为二维数组元素赋值
}

知らせ:

  • 2 次元配列要素 ( 如arr[i][0]) に値を割り当てたい場合は、追加された要素 (arr[i] など) が配列として作成されていることを最初に確認する必要があります。そうしないと、プログラムは「Uncaught TypeError. .." エラー。
  • 多次元配列を作成する場合、JavaScript では配列の次元数に制限はありませんが、実際のアプリケーションでは、コードの読み取り、デバッグ、保守を容易にするために、データを保存するために 3 次元以下の配列を使用することをお勧めします。

4.2 課題の練習

  • 2次元配列を転置する

    • 2 次元配列の転置とは、2 次元配列の水平要素を垂直要素に保存することを指します。

    • res[0][0] = arr[0][0]、res[0][1] = arr[1][0]、res[0][2] = arr[2][0]

    • res[i][j] = arr[j][i]

    • res 配列の長さ = arr 要素 (arr[0] など) の長さ。

    • res 要素 (res[0] など) の長さ = arr 配列の長さ。

5 配列のソート

5.1 バブルソート

バブル ソート: コンピューター サイエンスの分野における、より単純なソート アルゴリズムです。

実装原理: バブル ソートのプロセスでは、必要に応じて小さいものから大きいもの、または大きいものから小さいものにソートし、配列内の 2 つの隣接する要素の値を継続的に比較し、小さい方または大きい方の要素を前方に移動します。

  • 隣接する要素を比較します。最初のものが 2 番目のものより大きい場合は、両方を交換します。

  • 隣接する要素の各ペアに対して、最初のペアから始めて最後のペアで終わるまで、同じことを実行します。この時点では、最後の要素が最大の数値である必要があります。

  • 最後の要素を除くすべての要素に対して上記の手順を繰り返します。

  • 比較する数値のペアがなくなるまで、要素の数を減らしながら上記の手順を繰り返します。

比較のラウンド数 = 配列の長さ - 1;

ラウンドごとの比較数 = 配列の長さ - 現在のラウンド数

// 编写方法,实现冒泡
var arr = [98, 31, 5, 27, 2, 78];
//外层循环,控制趟数,每一次找到一个最大值
for (var i = 0; i < arr.length - 1; i++) {
    
    
    // 内层循环,控制比较的次数,并且判断两个数的大小
    for (var j = 0; j < arr.length - (i + 1); j++) {
    
    
        // 白话解释:如果前面的数大,放到后面(当然是从小到大的冒泡排序)
        if (arr[j] > arr[j + 1]) {
    
    
            var temp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = temp;
        }
    }

}
console.log(arr);

5.2 挿入ソート

挿入ソート: バブル ソートを最適化したものでもあり、直感的でシンプルなソート アルゴリズムです。

実装原理: 順序付けされた配列要素のストレージを構築することにより、ソートされていない配列要素については、ソートされた配列内の最後の要素から最初の要素までトラバースし、対応する位置を見つけて挿入します。このうち、ソート対象となる配列の最初の要素は順序付き配列とみなされ、最後から 2 番目の要素は順序なし配列とみなされます。

  • 最初の要素から始めて、要素はソートされていると考えることができます。
  • 次の要素を取り出し、ソートされた要素シーケンスを後ろから前にスキャンします。
  • (ソートされた) 要素が新しい要素より大きい場合は、要素を次の位置に移動します。
  • 並べ替えられた要素が新しい要素以下になる位置が見つかるまで、手順 3 を繰り返します。
  • その位置に新しい要素を挿入した後。
  • 手順2~5を繰り返します。
let arr = [98, 7, 65, 54, 12, 6];
let len = arr.length;
let preIndex, current;
for (let i = 1; i < len; i++) {
    
    
    preIndex = i - 1;
    current = arr[i];
    while (preIndex >= 0 && current < arr[preIndex]) {
    
    
        arr[preIndex + 1] = arr[preIndex];
        preIndex--;
    }
    arr[preIndex + 1] = current;
}
return arr;

例: 小さいものから大きいものへ並べ替えます。挿入ソート比較の数は、ソートされていない配列の長さと同じです。

6 つの一般的な配列メソッド

6.1 スタックおよびキュー方式

JavaScript では、配列要素を追加および削除する前述のメソッドに加えて、Array オブジェクトによって提供されるメソッドを使用して、スタックおよびキューの操作をシミュレートすることもできます。

  • 配列の新しい要素を配列の末尾または先頭に追加します。
  • 配列の末尾または先頭から配列要素を削除します。
メソッド名 機能説明 フォーマット
押す() 1 つ以上の要素を配列の末尾に追加し、配列の新しい長さを返します。 Array.push(パラメータ 1, パラメータ 2...);
シフト解除() 1 つ以上の要素を配列の先頭に追加し、配列の新しい長さを返します。 Array.unshift(パラメータ1,パラメータ2…);
ポップ() 配列の末尾から要素を削除して返します。配列が空の場合は未定義です。 Array.pop();
シフト() 配列の先頭から要素を削除して返します。配列が空の場合は未定義の要素を返します。 Array.shift();
  • Push() メソッドと unshift() メソッドの戻り値は、新しい配列の長さです。
  • Pop() メソッドと SHIFT() メソッドは、シフトされた配列要素を返します。

6.2 検索方法

開発では、指定された値が配列であるかどうかを検出したり、配列内の指定された要素の位置を見つけたりする必要があります。

メソッド名 機能説明 フォーマット
含む() 配列に要素が含まれているかどうかを判断するために使用され、要素が含まれている場合は true を返し、そうでない場合は false を返します。 Array.includes(検索値, 開始);
Array.isArray() 渡された値が配列であるかどうか、true を返すか false を返すかを判断するために使用されます。
の指標() 指定された値が見つかる配列内の最初のインデックスを返します。それが存在しない場合は -1 を返します。 Array.indexOf(検索値,開始);
lastIndexOf() 配列内の最後の要素のインデックスを返します。要素が存在しない場合は -1 を返します。 Array.indexOf(検索値,開始);

Array.isArray() メソッドを除き、テーブル内の他のすべてのメソッドは、デフォルトで指定された配列インデックスから取得を開始します。また、取得方法は演算子 "===" と同じです。つまり、それらが一致する場合にのみ行われます。より成功した結果が返されるでしょうか。

include() メソッドと Array.isArray() メソッド
var data = ['peach', 'pear', 26, '26', 'grape'];
// 从数组下标为3的位置开始检索数字26
console.log(data.includes(26, 3));       // 输出结果:false
// 从数组下标为data.length - 3 的位置查找数字26
console.log(data.includes(26, -3));      // 输出结果:true
// 判断变量data是否为数组
console.log(Array.isArray(data));        // 输出结果:true
  • include() メソッドの最初のパラメータは、検索する値を表します。
  • include() メソッドの 2 番目のパラメーターは、配列内で検索する添字の開始位置を指定するために使用されます。
    • 配列の長さを超える値に設定すると、配列は取得されず、直接 false が返されます。
    • 0 未満の数値に設定すると、取得されるインデックス位置は、配列の長さに指定した負の数値を加えたものと等しくなります。結果が依然として 0 未満の数値である場合は、配列全体が取得されます。
IndexOf() メソッド

IndexOf() は、配列内の指定された添字位置から最初に指定された値を取得するために使用されます。存在する場合は、対応する要素の添字を返し、存在しない場合は -1 を返します。

IndexOf() メソッドの 2 番目のパラメーターは、検索を開始するインデックスを指定するために使用されます。

  • その値が配列の長さ以上の場合は、-1 が直接返されます。
  • 値が負の数の場合、検索添え字の位置は、配列の長さに指定した負の数を加えたものと等しくなります。結果が依然として 0 未満の場合は、配列全体が取得されます。
var fruits = ["Banana","Orange","Apple","Mango","Banana","Orange","Apple"];
var a = fruits.indexOf("Apple",4);
lastIndexOf() メソッド

Array オブジェクトによって提供される lastIndexOf() メソッドは、指定されたインデックス位置から配列内の最後に指定された値のインデックスを取得するために使用されます。IndexOf() 取得メソッドとは異なり、lastIndexOf() メソッドのデフォルトは逆方向の取得、つまり配列の末尾から配列の先頭までの取得です。

lastIndexOf() メソッドの 2 番目のパラメーターは、検索インデックスを指定するために使用されます。検索インデックスは逆に取得されるため、次のようになります。

  • その値が配列の長さ以上の場合、配列全体が検索されます。
  • 値が負の数の場合、インデックス位置は、配列の長さに指定された負の数を加えた値に等しくなります。値がまだ負の数である場合は、直接 -1 が返されます。
var fruits = ["Banana","Orange","Apple","Mango","Banana","Orange","Apple"];
var a = fruits.lastIndexOf("Apple",4);

6.3 配列を文字列に変換する

開発中に配列を文字列に変換する必要がある場合は、JavaScript が提供するメソッドを使用してこれを実現できます。

メソッド名 機能説明 フォーマット
参加する() 配列のすべての要素を文字列に連結します。 Array.join(文字列);
toString() 指定された配列とその要素を表す文字列を返します。 Array.toString();
var arr = ['a','b','c'];
console.log(arr.join());      // 输出结果:a,b,c
console.log(arr.join('-'));   // 输出结果:a-b-c
console.log(arr.toString());  // 输出结果:a,b,c

join() メソッドと toString() メソッドの類似点:

  • 多次元配列は、デフォルトでカンマ連結を使用して文字列に変換できます。
  • 配列要素が未定義、null、または空の配列の場合、対応する要素は空の文字列に変換されます。

join() メソッドと toString() メソッドの違い:

  • join() メソッドでは、配列要素を結合するための記号を指定できます。

6.4 その他の方法

前に説明したいくつかの一般的なメソッドに加えて、JavaScript はその他の一般的に使用される配列メソッドも多数提供します。

たとえば、配列のマージ、配列の浅いコピー、配列要素の順序の反転などです。

メソッド名 機能説明 フォーマット
選別() 配列の要素をソートし、配列を返します。 array.sort([コールバック関数]);
埋める() 配列内のすべての要素を、指定されたインデックス範囲内の固定値で埋めます。 array.fill(値, 開始, 終了);
逆行する() 配列内の要素の位置を逆にする 配列.reverse();
スプライス() 指定された範囲の添字内の要素を配列に削除または追加します array.splice(開始, 番号[,要素 1, 要素 2…]);
スライス() 指定されたインデックス範囲内の配列要素を配列から新しい配列にコピーします array.slice(開始、終了);
concat() 2 つ以上の配列をマージした新しい配列を返します array.concat(任意のデータ型 [, 任意のデータ型...]);
  • lice() メソッドと concat() メソッドは実行後に新しい配列を返しますが、元の配列には影響しません。残りのメソッドは実行後に元の配列に影響します。
  • splice() メソッドの最初のパラメータの値が配列の長さ以上の場合、演算は配列の末尾から開始され、値が負の数の場合、添字の位置は配列の長さと等しくなります。配列の長さに指定した負の数を加えたもので、値が依然として負の数である場合、演算は配列の先頭から開始されます。
/* array.sort([回调函数]);
** 给数组中的元素排序,默认以 unicode 编码顺序排列,因此直接对数组中的数字排序会产生预料外的结果
** 可以传递一个回调函数作为sort的参数,回调函数中有两个形参分别表示数组中一前一后的两个元素,具体是哪两个元素需要根据循环确认
** 函数的返回值决定是否交换这个两个元素
** -- 当返回值大于0时交换
** -- 小于0时不交换
** -- 等于0时认为两个值相等不交换
** 会直接修改原数组的元素,与方法的返回值相同
*/
var arr = [1, 10, 20, 15, 25, 5];
arr.sort(function(a, b){
    
    
    return a-b;
});

/* arr.reverse();
** 第一个参数是截取开始的索引,返回数组会包括开始索引的元素
** 第二个参数是截取结束的索引,返回数组不会包括结束索引的元素
** 参数可以是负值,如果为负就是从后往前计数
*/
var arr = [1,2,3,4];
var result = arr.reverse()
console.log(result); // 4,3,2,1
console.log(arr);    // 4,3,2,1

/* array.slice(start, end);
** 第一个参数是截取开始的索引,返回数组会包括开始索引的元素
** 第二个参数是截取结束的索引,返回数组不会包括结束索引的元素
** 参数可以是负值,如果为负就是从后往前计数
*/
var arr = [0,1,2,3,4,5];
var arr1 = arr.slice(0,4);
console.log(arr1);
var arr2 = arr.slice(-3,-1);
console.log(arr2);

/* array.splice(start, number[,元素1, 元素2...]);
** 第一个参数为从哪个索引开始删除元素
** 第二个参数为删除几个元素
** 从第三个参数开始的参数都是是在第一个参数的索引之前添加这些元素
*/
var arr = [0,1,2,3,4,5];
arr.splice(0,1,7,8,9);
console.log(arr);

/* array.concat(任意数据类型[,任意数据类型...]);
** 可以将两个或者多个数组连接成一个数组,不会改变原数组
** 拷贝原数组,生成原数组
*/
var arr = [1,2,3,4];
var result = arr.concat([5,6,7,8],1,"a", false, null, undefined, {
    
    });
console.log(result);

7 練習課題

  • バブルソートを使用すると、大きい順にソートされ、配列は 70,35,67,49,20,59,98,100 になります。

  • 文字列配列内の各項目の長さを検索します。

  • 任意の 2 次元配列内のデータの数を出力します

  • 文字列配列を | またはその他の記号で分割する

  • アレイの重複排除

  • 小さいものから大きいものまでソートされた配列があります。ここで数値を入力し、元のルールに従って配列に挿入します。

  • 猿が王を選ぶ

    • サルのグループは円形に整列し、「1、2、...、n」に従って順番に番号を付けるように求められます。次に、1 番目の猿から数え始め、m 番目の猿まで数えて、円の外に追い出します。次の猿は 1 から数え始め、m 番目の猿まで数えて、それを追い出します...というように、そこまで続きます。残っているのは一匹の猿だけで、その猿が私たちが探している王様です。

      • n (サルの総数): 8、m (サークルから追い出されたサルの数): 3 と仮定します。

      • 第 1 ラウンド: キックされたサルの番号は 3 と 6、ポジション番号は 3 と 6 です。

      • 第 2 ラウンド: キックされたサルの番号は 1 と 5、ポジション番号は 9 と 12 です。

      • 3 ラウンド: キックされたサルの番号は 2 と 8、ポジション番号は 15 と 18 です。

      • 丸4:なし。

      • ラウンド 5: キックされたサルの番号は 4、ポジション番号は 21 です。

      • 猿王の番号は7となります。

      • ユーザーが通過したサル n と、prompt() を通じて追い出された m 番目のサルの合計数を受け取ります。

    • 配列を使用してすべてのサルの番号 (1 ~ n) を保存します。

    • 変数 i を設定して、ゲームに参加しているサルの位置 (カウント) を毎回記録します。

    • while ループを通じて、monkey 配列内の要素の数が 1 より大きい限り、ループは継続します。

    • ループ内で、現在のサルの位置 i と m の残りが 0 かどうかを確認します。0 の場合は、配列要素を削除します。

  • 地方と都市の三層連携

    • Web 開発では、地域連携は非常に一般的な機能です。
    • たとえば、ショッピングやテイクアウトなどでは、配送先住所を選択する必要があります。
    • その中で、道と市の三段階連携は最も基本的な機能である。
    • 次に、配列を使用して、関連する州、市、地域の情報を保存します。
    • 1 次元配列の州には、州、自治区、市区町村が格納されます。
    • 二次元配列 city には、対応する省、自治区、直轄市に属するすべての都市が格納されます。格納する際には、city[index] のインデックス値が、対応する省の要素の添字インデックスと同じであることを確認してください。
    • 同様に、3 次元配列を使用して、各都市の下のすべてのエリアを保存します。

これは、猿が 1 匹だけ残るまで続き、その猿が私たちが探している王になります。
- n (サルの総数): 8、m (サークルから追い出されたサル): 3 とします。
- 最初のサークルでは、追い出されたサルの番号は 3 と 6、位置番号は 3 と 6 です。
- 2 番目の丸: キックされたサルには 1 と 5 の番号が付けられ、ポジション番号は 9 と 12 になります。
- 3 番目の丸: 蹴られたサルには 2 と 8 の番号が付けられ、ポジション番号は 15 と 18 になります。
・丸4:なし。
・5つ目の丸:蹴られた猿の番号は4、ポジション番号は21。
- 猿王の獲得数:7。

- 通过prompt()接收用户传递的猴子总数n和踢出的第m只猴子。
  • 配列を使用してすべてのサルの番号 (1 ~ n) を保存します。

  • 変数 i を設定して、ゲームに参加しているサルの位置 (カウント) を毎回記録します。

  • while ループを通じて、monkey 配列内の要素の数が 1 より大きい限り、ループは継続します。

  • ループ内で、現在のサルの位置 i と m の残りが 0 かどうかを確認します。0 の場合は、配列要素を削除します。

  • 地方と都市の三層連携

    • Web 開発では、地域連携は非常に一般的な機能です。
    • たとえば、ショッピングやテイクアウトなどでは、配送先住所を選択する必要があります。
    • その中で、道と市の三段階連携は最も基本的な機能である。
    • 次に、配列を使用して、関連する州、市、地域の情報を保存します。
    • 1 次元配列の州には、州、自治区、市区町村が格納されます。
    • 二次元配列 city には、対応する省、自治区、直轄市に属するすべての都市が格納されます。格納する際には、city[index] のインデックス値が、対応する省の要素の添字インデックスと同じであることを確認してください。
    • 同様に、3 次元配列を使用して、各都市の下のすべてのエリアを保存します。

おすすめ

転載: blog.csdn.net/zhangchen124/article/details/133277139