1. アレイの概念と特徴
- 配列はオブジェクトの一種であり、配列内のデータは順番に配置され、順序付けられたコレクションです。
- データは順番にマークされており、インデックスとも呼ばれるシリアル番号は 0 から始まります。
- 配列には長さ属性があり、配列に含まれるデータの数を示すために使用されます。
- インデックス付けパターンは 0 から増加し、データの総数は length 属性によってマークされるため、ループ ステートメントを通じて配列を走査できます。
for(var i=0; i<arr.length; i++){
console.log( arr[i] );
}
2. 配列の作成
- リテラル:
var arr1 = [数据1, 数据2, 数据3, ...];
- 関数の作成:
var arr2 = new Array(数据1, 数据2, 数据3, ...);
- 違い: 数値データが 1 つだけの場合、リテラルはデータとして作成され、コンストラクターは配列の長さとして作成されます。
undefined
3. 配列演算
- インデックス+長さの演算
- ネイティブ操作、低レベル操作、すべての配列操作関数の基礎
- チェック:
arr[索引]
- 変化:
arr[索引] = "新值"
- 増加: デフォルトでは、配列の最後にのみ追加できます。
- 指定された位置の必要な増加を完了するには、配列データ位置の移動と連携する必要があります。
- 削除: デフォルトでは、配列の末尾からのみ削除できます。
- データ削除の原理:長さを短くする
- 指定された位置の必要な削除を完了するには、配列データ位置の移動と連携する必要があります。
- 配列の長さは変更可能
- 元の長さよりも長い場合、余分な位置が
empty
埋め込まれ、次のように読み取られます。undefined
- 元の長さは時間であり、配列の末尾から削除されます。
- メソッドの操作: 配列をオブジェクトとして扱い、それ自体の関数を配列メソッドと呼びます。
arr.push()
: 最後の桁を追加します。
arr.pop()
:最後の桁を削除
arr.shift()
:最初のものを削除
arr.unshift()
:最初のものが追加されます
arr.reverse()
: 配列内のデータを反転します。
arr.join()
: 指定された文字に従って配列内のすべてのデータを結合します
arr.concat()
: 配列を結合する
arr.slice()
: インターセプト
arr.splice()
: 削除して置き換えます
arr.sort()
: 選別
- 推奨読書:配列メソッドの完全なコレクション
4. 配列のソート
- バブルソート: 配列内の隣接する数値を順番に比較し (ペアワイズ比較)、大きいほうを後ろに置きます。
var arr = [5,99,2,9,1,5,67,7,10,23];
for(var i=0; i<arr.length-1; i++){
for(var j=0; j<arr.length-i-1; j++){
var x;
if(arr[j] > arr[j+1]){
x = arr[j+1];
arr[j+1] = arr[j];
arr[j] = sum;
}
}
}
console.log(arr);
- 選択ソート: 左から右に、配列内の 1 つのデータと後続のすべてのデータを比較し、最小のものを取得した後、現在の位置と交換します。
var arr = [5,99,2,9,1,5,67,7,10,23];
for(var i=0; i<arr.length-1; i++){
var min = arr[i];
var minIndex = i;
for(var j=i+1; j<arr.length; j++){
if(min > arr[j]){
min = arr[j];
minIndex = j;
}
}
arr[minIndex] = arr[i];
arr[i] = min;
}
console.log(arr);
5. ES5 の新しい配列メソッド
arr.indexOf()
arr.forEach()
arr.map()
arr.filter()
arr.some()
arr.every()
arr.reduce()
arr.includes()
- 推奨読書:配列メソッドの完全なコレクション
6. 練習
- 任意の 2 つの 1 桁の間のすべての数値をカプセル化して計算し、それらをペアで組み合わせてどの奇数が組み合わせられるかを決定し、それらを配列に入れて関数を返します。
- 1,3
- 1,2,3
- 11,12,13,21,22,23,31,32,33
- xxx(1, 3);
- [11、13、21、23、31、33]
- 配列内のすべてのデータを 30% 増やす関数をカプセル化します。
- [1、2、3、4]
- マップ(arr);
- [1.3、2.6、3.9、5.2]
- 関数をカプセル化し、合計を計算する数値でいっぱいの配列があります。
- 関数をカプセル化し、平均を計算する数値でいっぱいの配列があります。
- カプセル化機能:100~999の水仙番号を全て削除し、関数外に戻す
- カプセル化機能: 配列が回文配列 (対称) であるかどうかを判断します。
- [1,2,3,2,1]
- [1,2,3,3,2,1]
- カプセル化機能:乱雑なデータを大きいものから小さいものに分類する
- カプセル化関数は、指定されたデータに基づいて、データが配列内に存在するかどうかをクエリし、存在する場合は true を返し、存在しない場合は false を返します。
- [3、4、5、6、5、4、6、5、3、2]
- count(arr, 5); // 3
- count(arr, 7); // 間違い
- 配列の重複排除をカプセル化する関数
- 元の配列の変更は許可されていません
- [3、5、2、3、4、5、6、5、4、3、2、1]
- noRepeat(arr);
- [3、5、2、4、6、1]
- ソート済みの数値配列が存在するため、新規データを挿入する場合は、元のソートに影響を与えず、カプセル化機能が実装されている必要があります。
- [1、3、4、6、9]
- 挿入(arr, 5);
- [1、3、4、5、6、9]
- カプセル化関数は、指定されたデータに基づいて、配列内にデータが存在するかどうかを問い合わせ、存在する場合は出現回数を返し、存在しない場合は false を返します。
- 既知の配列
var arr = [{
name: "张三",
age: 19,
sex: "男",
hobby: ["篮球", "喝酒", "乒乓球"],
integral: 90
},{
name: "大张四",
age: 25,
sex: "男",
hobby: ["抽烟", "足球", "乒乓球"],
integral: 80
},{
name: "王五",
age: 22,
sex: "女",
hobby: ["篮球", "烫头", "唱歌"],
integral: 100
},{
name: "张六",
age: 18,
sex: "女",
hobby: ["跳舞", "足球", "rap"],
integral: 85
}];
- バスケットボールをするのが好きな人をすべて除外し、新しい配列に保存します。
- 全職員の合計スコア、数値を計算
- 年齢で昇順に並べ替えて新しい配列に保存します
- すべての男性に +10 ポイント (整数) を与え、元の配列を変更します
- ループ ステートメントは許可されません: for、while、do-while