이 기사에서 공유한 내용은 JS 데이터 구조에 의한 배열의 2차 캡슐화에 관한 것입니다. 다음으로 구체적인 내용을 살펴보겠습니다.
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; }
Parameters | 매개변수 설명 | Example | ||
---|---|---|---|---|
|
getCapacity | |||
isEmpty | ||||
| isEmpty()addFirst | |||
e | 새 요소 | addFirst(e) | addLast | |
e | 새 요소 | addLast(e) | add | |
index, e | index index, e 새 요소 | add(index, e) | remove | |
index | index | remove(index) | removeFirst | |
|
removeLast | |||
|
removeElement | |||
e | 제거된 요소 e | removeElement (e) | get | |
index | index | get(index) | set | |
index, e | index index, e의 새로 대체된 요소 | set(index, e) | contains | |
e | Query 포함된 요소 | contains(e) | findIndex | |
toString() | 10. 완전한 보조 캡슐화된 배열 코드 | 관련 권장 사항: | ||
JS 변수 개체란 무엇인가요? JS 변수 객체에 대한 자세한 설명 및 주의사항 |
위 내용은 js 보조 캡슐화 배열 사용 소개(코드)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!