ES6学习笔记七(Set和Map)

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

欢迎访问我的个人博客

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海面有风

您的鼓励将是我前进的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值