1、Set的方法
/*
*Set的数据结构只能进行增,删,查操作,不能进行修改(Set不能通过索引来查询数据)
*/
//增加add()
var set = new Set() // Set(0) {}
// 添加数据
set.add('ES6') // Set(1) {"ES6"}
// 还可以链式添加数据
set.add('javascript').add({age: 7})
// delete 删除数据: 删除指定的数据,或者清空数据
var set = new Set([1, 2, 3]);
set.delete(3)//删除数字3 true
console.log(set);//Set(2) {1,2}
// set.size 可以统计多少条数据,类似数组中的length属性
console.log(set.size); // 2
// clear 会清空Set实例
console.log(set.clear()); // undefined
// has 方法可以查看某个元素是否包含在 Set 实例中
console.log(set.has('a')); // false
console.log(set.has(1)); // true
2、数组去重
//通过hash方法去重,利用对象的键是唯一的。
function unique(arr){
const newArr = [];
const hash = {};
for(var i=0; i<arr.length; i++){
if(!hash[arr[i]]){//不为真说明还没加入新数组中
hash[arr[i]] = true;//赋值为真
newArr.push(arr[i]);//加入1到新的数组
}
}
return newArr;
}
console.log(unique([1,2,2,3,4,5,3,2,1]))//[1,2,3,4,5]
//通过Set方法去重
function unique(arr) {
return [...new Set(arr)]
}
console.log(unique([1,2,2,3,4,5,3,2,1]))
3、Set遍历
//通过forEach()进行遍历
let set = new Set(['a', 'b', 'c'])
set.forEach((item) => {
console.log(item)
})
//通过for...of遍历
var set = new Set(['a', 'b', 'c'])
set.keys(); // SetIterator {"a", "b", "c"}
set.values(); // SetIterator {"a", "b", "c"}
set.entries(); // SetIterator {"a" => "a", "b" => "b", "c" => "c"}
for(var [key, value] of set.entries()) {
console.log(key, value)
}
// a, a
// b, b
// c, c
4、Map
//增加
var map = new Map([["x", 1], ["y", 2], ["z", 3]]);//参数只要是可遍历的即可
map.set('a', 1).set('b', 2).set('c', 3);//链式添加
map.set('u', 4);//key值可以是任意值(字符串,对象,数组,函数)
//获取
console.log(map.get(key));
//判断某一个值是否存在
map.has(key);
//删除某一个值
map.delete(key);
//移除map中的所有对象
map.clear(); // 返回 undefined
map.clear(key);//删除特定的key
5、Map遍历
let map = new Map([["x", 1], ["y", 2], ["z", 3]]);
for (let value of map.values()) {
console.log(value);
}
// 1
// 2
// 3
for (let key of map.keys()) {
console.log(key)
}
//x
//y
//z
for (let [key, value] of map.entries()) {
console.log(key + " = " + value);
}
// x = 1
// y = 2
// z = 3