ES6-新增数据结构(set/map)

set数据结构

  • 特点:类似于数组,但是里面不能有重复的值
  • 用法:new Set(['a','b',...])
  • 注意点:set出来的数据没有下标,也就是说它不能通过[][index]的方式修改数据,也没有get方法,也就是说,改基本没戏

基本使用

let setArr = new Set(['a', 'b', 'c']);
console.log(setArr);//Set(3) {"a", "b", "c"}

利用set进行数组去重

let arr = [1, 5, 6, 1, 1, 5, 1, 6, 5, 1, 4];
let setArr = new Set(arr);利用set中元素的唯一性,进行数组去重
console.log(setArr);//Set(4) {1, 5, 6, 4}
let simpleArr = [...setArr];//set转数组
console.log(simpleArr);//(4) [1, 5, 6, 4]

set的方法

增加:add方法

  • 返回值:添加完数据的set,可以进行链式操作
let arr = ['张安1', '张安2', '张安3'];
let setArr = new Set(arr);//Set(3) {"张安1", "张安2", "张安3"}
console.log(setArr.add('addValue'));//Set(4) {"张安1", "张安2", "张安3", "addValue"}
console.log(setArr);//Set(4) {"张安1", "张安2", "张安3", "addValue"}

删除:delete方法

  • 返回值:布尔
let arr = ['张安1', '张安2', '张安3']
let setArr = new Set(arr);//Set(3) {"张安1", "张安2", "张安3"}
console.log(setArr.delete('张安2'));//true
console.log(setArr);//Set(2) {"张安1", "张安3"}

清除:clear方法

  • 返回值:undefined
let arr = ['张安1', '张安2', '张安3'];
let setArr = new Set(arr);//Set(3) {"张安1", "张安2", "张安3"}
console.log(setArr.clear());//undefined
console.log(setArr);//Set(0) {}

查询:has方法

  • 返回值:布尔
let arr = ['张安1', '张安2', '张安3'];
let setArr = new Set(arr);
console.log(setArr.has('张安3'));//true

set的长度:size

  • 返回值:数字
let arr = ['张安1', '张安2', '张安3'];
let setArr = new Set(arr);//Set(3) {"张安1", "张安2", "张安3"}
console.log(setArr.size);//3

循环 for of / forEach

  • 没有key,只有value
let arr = ['张安1', '张安2', '张安3'];
let setArr = new Set(arr);//Set(3) {"张安1", "张安2", "张安3"}

for (const [key, value] of setArr.entries()) {
    
    
  console.log(key, value);//张安1 张安1 张安2 张安2 张安3 张安3
}
setArr.forEach((item, index) => {
    
    
  console.log(item, index);//张安1 张安1 张安2 张安2 张安3 张安3
})

set和数组的相互转换

let arr = ['张安1', '张安2', '张安3'];
let setArr = new Set(arr);//Set(3) {"张安1", "张安2", "张安3"}

let newSet = new Set([...setArr].map(item => {
    
    //set变数组,数组map好之后在变set输出
  return item + '886'
}));
console.log(newSet);//Set(3) {"张安1886", "张安2886", "张安3886"}

map数据结构

  • 特点:类似json,但是json的键(key)只能是字符串 map的key可以是任意的类型

基本使用

let map = new Map();
console.log(map);//Map(0) {}

增加:set

  • 返回值:添加完数据的map
let map = new Map();
console.log(map);//Map(0) {}
// map.set('key', 'value')
console.log(map.set('name', '张三'));//Map(1) {"name" => "张三"}
console.log(map.set({
    
     age: 26 }, '张三'));//Map(2) {"name" => "张三", {…} => "张三"}
console.log(map);//Map(2) {"name" => "张三", {…} => "张三"}

取值:get

  • 返回值:value
let map = new Map();
console.log(map.set('name', '张三'));//Map(1) {"name" => "张三"}
let json = {
    
    
  age: 26
}
console.log(map.set(json, '张三'));//Map(2) {"name" => "张三", {…} => "张三"}

console.log(map.get('name'));//张三
console.log(map.get(json));//张三

删除:delete

  • 返回值:布尔
let map = new Map();
console.log(map.set('name', '张三'));//Map(1) {"name" => "张三"}
let json = {
    
    
  age: 26
}
console.log(map.set(json, '张三'));//Map(2) {"name" => "张三", {…} => "张三"}

console.log(map.delete('name'));//true
console.log(map);//Map(1) {"name" => "张三"}

清空:clear

  • 返回值:undefined
let map = new Map();
console.log(map.set('name', '张三'));//Map(1) {"name" => "张三"}
let json = {
    
    
  age: 26
}
console.log(map.set(json, '张三'));//Map(2) {"name" => "张三", {…} => "张三"}

console.log(map.clear());//undefined
console.log(map);//Map(0) {}

查询:has

  • 返回值:布尔
let map = new Map();
console.log(map.set('name', '张三'));//Map(1) {"name" => "张三"}
let json = {
    
    
  age: 26
}
console.log(map.set(json, '张三'));//Map(2) {"name" => "张三", {…} => "张三"}

console.log(map.has('name'));//true
console.log(map);//Map(1) {"name" => "张三"}

map的长度:size

  • 返回值:数字
let map = new Map();
console.log(map.set('name', '张三'));//Map(1) {"name" => "张三"}
let json = {
    
    
  age: 26
}
console.log(map.set(json, '张三'));//Map(2) {"name" => "张三", {…} => "张三"}
console.log(map.size);//2

循环 for of / forEach

let map = new Map();
console.log(map.set('name', '张三'));//Map(1) {"name" => "张三"}
let json = {
    
    
  age: 26
}
console.log(map.set(json, '张三'));//Map(2) {"name" => "张三", {…} => "张三"}

for (const [key, value] of map.entries()) {
    
    
  console.log(key, value);//name 张三  {age: 26} "张三"
}

map.forEach((item, index) => {
    
    
  console.log(item, index);//张三 name  张三 {age: 26} 
})

猜你喜欢

转载自blog.csdn.net/big_sun_962464/article/details/113731394
今日推荐