2013-01-31 01:49:25 +08:00
|
|
|
/*
|
|
|
|
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
|
|
|
Author Tobias Koppers @sokra
|
|
|
|
|
*/
|
|
|
|
|
|
2016-12-29 11:10:02 +08:00
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
class ArrayMap {
|
|
|
|
|
constructor() {
|
|
|
|
|
this.keys = [];
|
|
|
|
|
this.values = [];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
get(key) {
|
|
|
|
|
for(let i = 0; i < this.keys.length; i++) {
|
|
|
|
|
if(this.keys[i] === key) {
|
|
|
|
|
return this.values[i];
|
|
|
|
|
}
|
2013-01-31 01:49:25 +08:00
|
|
|
}
|
2016-12-29 11:10:02 +08:00
|
|
|
return;
|
2013-01-31 01:49:25 +08:00
|
|
|
}
|
2016-12-29 11:10:02 +08:00
|
|
|
|
|
|
|
|
set(key, value) {
|
|
|
|
|
for(let i = 0; i < this.keys.length; i++) {
|
|
|
|
|
if(this.keys[i] === key) {
|
|
|
|
|
this.values[i] = value;
|
|
|
|
|
return this;
|
|
|
|
|
}
|
2013-01-31 01:49:25 +08:00
|
|
|
}
|
2016-12-29 11:10:02 +08:00
|
|
|
this.keys.push(key);
|
|
|
|
|
this.values.push(value);
|
|
|
|
|
return this;
|
2013-01-31 01:49:25 +08:00
|
|
|
}
|
2016-12-29 11:10:02 +08:00
|
|
|
|
|
|
|
|
remove(key) {
|
|
|
|
|
for(let i = 0; i < this.keys.length; i++) {
|
|
|
|
|
if(this.keys[i] === key) {
|
|
|
|
|
this.keys.splice(i, 1);
|
|
|
|
|
this.values.splice(i, 1);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
2013-01-31 01:49:25 +08:00
|
|
|
}
|
2016-12-29 11:10:02 +08:00
|
|
|
return false;
|
2013-01-31 01:49:25 +08:00
|
|
|
}
|
2016-12-29 11:10:02 +08:00
|
|
|
|
|
|
|
|
clone() {
|
|
|
|
|
const newMap = new ArrayMap();
|
|
|
|
|
|
|
|
|
|
for(let i = 0; i < this.keys.length; i++) {
|
|
|
|
|
newMap.keys.push(this.keys[i]);
|
|
|
|
|
newMap.values.push(this.values[i]);
|
|
|
|
|
}
|
|
|
|
|
return newMap;
|
2013-01-31 01:49:25 +08:00
|
|
|
}
|
2016-12-29 11:10:02 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
module.exports = ArrayMap;
|