ホームページ > 記事 > ウェブフロントエンド > js の二次カプセル化配列の使用の概要 (コード)
この記事で共有する内容は、JS データ構造による配列の二次カプセル化に関するものです。次に、具体的な内容を見てみましょう。
class myArray { }
/** * 初始化构造函数 * @param capacity 容量 */ constructor(capacity) { // 初始化arr变量 this.arr = capacity === undefined ? [] : new Array(capacity); // 数组长度 this.length = 0; // 数组容量 this.capacity = capacity; }
// 获取数组的长度 getLength() { return this.length; } // 获取数组的容量 getCapacity() { return this.arr.length; } // 判断数组是否为空 isEmpty() { return this.length === 0; }
/** * 在数组中在index插入一个新的元素e * @param index 索引 * @param e 元素 * 原理: * 首先在传进来index索引的位置向后面移动一位, * 然后把该index索引腾空出来放进传入的新的元素e, * 最后维护一下length,长度加1 */ add(index, e) { if (this.length === this.arr.length) { throw new Error('Add failed. Array is full.') } if (index < 0 || index > this.length) { throw new Error('Add failed. Request index >= 0 and index <= length'); } for (let i = this.length - 1; i >= index; i--) { this.arr[i + 1] = this.arr[i]; } this.arr[index] = e; this.length++; } // 向数组首位添加一个新元素e addFirst(e) { this.add(0, e) } // 向数组所有的元素后面添加一个新元素e addLast(e) { this.add(this.length, e); }
/** * 从数组中删除index位置的元素,返回删除的元素 * @param index * @returns {*} * 原理: * 首先找到索引index的位置, * 然后把索引后面的元素都向前移动一位,其实是把索引后面的翻盖前面一位的元素 * 最后维护一下length,减一 * */ remove(index) { if (index < 0 || index >= this.length) { throw new Error('Remove failed. Request index >= 0 and index <= length'); } let ret = this.arr[index]; for (let i = index + 1; i < this.length; i++) { this.arr[i - 1] = this.arr[i]; } this.length--; return ret; } // 从数组中删除第一个元素,返回删除的元素 removeFirst() { return this.remove(0) } // 从数组中删除最好个元素,返回删除的元素 removeLast() { return this.remove(this.length - 1) } // 从数组中删除元素e removeElement(e) { let index = this.findIndex(e); if (index != -1) { this.remove(index); } }
// 获取index索引位置的元素 get(index) { if (index < 0 || index >= this.length) { throw new Error('Get failed. Index is illegal.'); } return this.arr[index]; } // 修改index索引的元素e set(index, e) { if (index < 0 || index >= this.length) { throw new Error('Get failed. Index is illegal.'); } this.arr[index] = e; }
// 查询数组是否包含e元素 contains(e) { for (let i = 0; i < this.length; i++) { if (this.arr[i] === e) { return true; } } return false; } // 查找数组中元素所在的所在的索引,如果不存在e,则返回-1 findIndex(e) { for (let i = 0; i < this.length; i++) { if (this.arr[i] === e) { return i; } } return -1; } // 把数组转换为字符串,并返回结果 toString() { let res = ""; console.log(`Array: length = ${this.length}, capacity = ${this.capacity}.`); res += "["; for (let i = 0; i < this.length; i++) { res += this.arr[i]; if (i !== this.length - 1) { res += ', ' } } res += "]"; return res.toString(); }
Description | Parameters | パラメータの説明 | Example | |
---|---|---|---|---|
配列の長さを返す |
|
getLength() | ||
は配列の容量を返します |
getCapacity() |
|||
配列が空かどうかを判断し、ブール値を返します |
|
は空です() | ||
配列の最初の要素に新しい要素を追加します | e | 新しい要素 | addFirst(e) | |
配列内のすべての要素の後に新しい要素を追加します | e | New element | addLast(e) | |
配列のインデックスに新しい要素を挿入します e | index, e | index Index, e new element | add(index, e) | |
インデックス位置の要素を配列から削除し、deleteを返す要素 | index | index | remove(index) | |
配列から最初の要素を削除し、削除された要素を返しますelement |
removeFirst() |
|||
配列から最後の要素を削除し、削除された要素を返します |
removeLast() |
|||
削除配列からの要素e removed要素e | インデックスインデックスの要素を変更します | index、e | indexindex、eの新しく置き換えられた要素 | set(index, e) |
contains | 配列にe要素が含まれているかどうかをクエリします | e | 含まれる要素をクエリする | contains(e) |
findIndex | Find 配列内の要素 e のインデックス。e が存在しない場合は、クエリされた要素が返されます。 | toString。 () | ||
関連する推奨事項: | JS モジュラー分析 (名前空間) | JS 変数オブジェクトとは何ですか? JS変数オブジェクトと注意点を詳しく解説 | ||
以上がjs の二次カプセル化配列の使用の概要 (コード)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。