昨天实习的时候,有个需求需要在javascript中使用HashMap的功能,我大脑一懵,JavaScript有map这种结构吗?百度了一下,果然有!在此记录一下JavaScript中相关的集合类操作。
function list_test() {
let list = [1, 2, 3, 4, 5];
// 向最后插入一个元素
list.push(6);
// [ 1, 2, 3, 4, 5, 6 ]
console.log(list);
// 删除最后一个元素
list.pop();
// [1, 2, 3, 4, 5]
console.log(list);
list[4] = 100;
// [ 1, 2, 3, 4, 100 ]
console.log(list);
// 转字符串 "1,2,3,4,100"
console.log(list.join(","))
// 删除下标从0开始的2个元素,并添加后面的元素
list.splice(0,2,"a","b","C","a");
// [ 'a', 'b', 'C', 'a', 3, 4, 100 ]
console.log(list);
Array.prototype.remove = function(value){
let index = this.indexOf(value);
if(index > -1){
this.splice(index,1);
}
};
list.remove('a');
// [ 'b', 'C', 'a', 3, 4, 100 ]
console.log(list);
}
function map_test(){
let map = new Map();
map.set("lisi","李四");
map.set("zhangsan","张三");
// 张三
console.log(map.get("zhangsan"));
// true
console.log(map.has("zhangsan"));
map.delete("zhangsan");
// undefined
console.log(map.get("zhangsan"));
// false
console.log(map.has("zhangsan"));
map.forEach(function(value,key){
console.log(value,key);
});
for(let [key,value] of map){
console.log(key,value)
}
}
function set_test(){
let set = new Set();
set.add(2);
set.add(23);
set.add(32);
set.add(2);
set.add(322);
set.add(332);
set.add(12);
set.add(27);
console.log(set);
// 虽然没有 但是不报错
set.delete(5);
set.delete(2)
console.log(set);
set.forEach(element => {
console.log(element);
});
}
set_test();
总结
List操作:
增:list.push(obj)
删最后一个:list.pop()
删指定下标:list.splice(index,1)
删指定元素:list.remove(obj) 该方法需要重写
改:list[index] = obj
查下标: list.indexOf(obj)
删除并添加:list.splice(index,deleteNumber,obj...)
转字符串:list.join(str)
转字符串:list.toString()
遍历:for循环 forEach等等
Map操作:
增:map.set(key,value)
删:map.delete(key)
改:map.set(key,value)
查:map.get(key)
key是否存在:map.has(key)
遍历:
map.forEach(function(value,key,map){
console.log(value,key);
});
for(let [key,value] of map){
console.log(key,value)
}
Set操作:
增:set.add(obj)
删:set.delete(obj)
遍历:
set.forEach(element => {
console.log(element);
});
其他的操作,比如集合的交差并补,遇到的时候在说吧。