javascript数据结构-列表
这个数据结构的特性,总结下:基于一个数组,针对此数组封装很多的一个快捷方法从而组成一个数据列表类
项目中的列表数据完全可以放在这样的一个列表中,像数组的方法,完全可以在这个列表结构中重写下,每次调用方法就可以了
/*
定义List类
javascript数据结构-列表
这个数据结构的特性,总结下:基于一个数组,针对此数组封装很多的一个快捷方法从而组成一个数据列表类
项目中的列表数据完全可以放在这样的一个列表中,像数组的方法,完全可以在这个列表结构中重写下,每次调用方法就可以了
*/
class List {
constructor() {
this.listSize = 0; //初始化元素个数为0
this.pos = 0; //初始化位置为0
this.dataStore = []; //初始化空数组来保存列表元素
}
// 数据初始化
setData(data) {
this.listSize = data.length;
this.pos = 0;
this.dataStore = JSON.parse(JSON.stringify(data));
}
// 末尾插入元素
append(element) {
this.dataStore[this.listSize++] = element;
}
// 查找列表中的某一个元素
find(element) {
for (var i = 0; i < this.dataStore.length; i++) {
if (this.dataStore[i] == element) {
return i;
}
}
return -1;
}
// 删除列表中的某一元素
remove(element) {
var foundAt = this.find(element);
if (foundAt > -1) {
this.dataStore.splice(foundAt, 1);
--this.listSize;
return true;
}
return false;
}
// 返回列表中总的元素个数
length() {
return this.listSize;
}
// 显示列表元素
toString(element) {
this.dataStore[this.listSize++] = element;
}
// 向列表某个位置添加一个元素
insert(element, after) {
var insertPos = this.find(after);
if (insertPos > -1) {
this.dataStore.splice(insertPos + 1, 0, element);
this.listSize++;
return true;
}
return false;
}
// 清空列表
clear() {
delete this.dataStore;
this.dataStore = [];
this.listSize = this.pos = 0;
}
// 将列表的位置移到第一个位置上
front() {
this.pos = 0;
}
// 将列表的位置移到最后一个位置上
end() {
this.pos = this.listSize - 1;
}
//将当前位置前移一位
prev() {
if (this.pos > 0) {
this.pos--;
} else {
console.log("您当前已在首位");
}
}
// 将当前位置后移一位
next() {
if (this.pos < this.listSize - 1) {
++this.pos;
} else {
console.log("您当前已在末尾");
}
}
// 将当前位置移动到指定位置
moveTo(position) {
if (position < 0 || position > this.listSize - 1) {
console.log("请输入正确的位置");
} else {
this.pos = position;
}
}
// 返回列表的当前位置
currPos() {
return this.pos;
}
// 返回当前位置的元素
getElement() {
return this.dataStore[this.pos];
}
// 判断给定值是否在列表中
contains(element) {
return this.dataStore.includes(element);
}
}
let a = new List();
console.log(a.length());
module.exports = List;