Map和Set

这篇博客详细介绍了ES6中的Map和Set数据类型,包括Map的创建与初始化、Set的使用,以及字符串新方法如includes()、startsWith()等。此外,还讲解了可迭代数据类型、数组的新增方法和模块化编程的相关知识,并提供了多个练习题帮助理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.作业讲解

2.ES6字符串方法

2.1 新方法

  • includes():返回布尔值,判断是否找到参数字符串。
  • startsWith():返回布尔值,判断参数字符串是否在原字符串的头部。
  • endsWith():返回布尔值,判断参数字符串是否在原字符串的尾部。
  • repeat():返回新的字符串,表示将字符串重复指定次数返回。
  • padStart(length,newStr):返回新的字符串,表示用参数字符串从头部(左侧)补全原字符串。
  • padEnd(length,newStr):返回新的字符串,表示用参数字符串从尾部(右侧)补全原字符串。
  • 模板字符串

2.2 练习题

  • 字符串转化成驼峰式写法

     原字符串:xiaoshuo-ss-sfff-fe       ===>效果:Xiaoshuo-Ss-Sfff-Fe
  • 字符串去重

    var str2 = "asdasdfghajgh";

    代码

     /**
         * 给字符串去重
         * str="北京你好你好北京"
        */
        str = "北京你好你好北京"
    
    	/*****方法1:原始写法******/
        var mySet = new Set(str)          //字符串转集合(集合中元素没有重复)
        
        // var arr=Array.from(mySet)      //集合转数组
        var arr = [...mySet]            //集合转数组
    
        str = arr.join("")            //数组转字符串
        // console.log(str)
    
        /**方法2:简化写法***/
        str = [...new Set(str)].join("")
        console.log(str)
    
  • 统计字符串中最多的字符

     var str2 = "asdasdfghajghg";
  • 字符串反序

    var str="qwertyu";

3. 可迭代数据类型

Array

String

NodeList 节点列表

Set 集合

4. ES6数组方法

4.1新增方法

  • forEach
  • map
  • filter
  • some every
  • reduce
  • find
  • findIndex
  • includes
  • arr.keys
  • arr.values
  • arr.toString()
  • Array.from

4.2 练习题

1.将数组中数字的每一项相加求和

let arr = [1,5,89,5] 

2.要求将数组中的0项去掉,将不为0的值存入一个新的数组,生成新的数组

let arr = [4, 0, 7, 9, 0, 0, 2, 6, 0, 3, 1, 0]

3.数组去重

let arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5]

4.数组中求最大值

let  arr = [1,5,56,6,1,1,21,45,4]

5.数组中求最小值

let  arr = [1,5,56,6,1,1,21,45,4]

6.数组从小到大排序

let  arr = [1,5,56,6,1,1,21,45,4]

8.二维数组转化一维数组

  var arr=[9,[1,2],7,[2,3],1,[3,4],[4,5]];
  
  
  // [9, 1, 2, 7, 2, 3, 1, 3, 4, 4, 5]

5. Set数据类型

集合:里面的元素不能重复

 var mySet = new Set()

    //添加元素
    mySet.add("中国")
    mySet.add("美国")

    //获取元素数量
    console.log(mySet.size)

    //删除元素
    mySet.delete("中国")
    // console.log(mySet)

    //添加复杂数据类型
    mySet.add({ uname: "张三" })
    // console.log(mySet)

    //set是可遍历的(可迭代 iterater)
    for (item of mySet) {
      console.log(item)
    }

    //判断某元素是否存在
    var result = mySet.has("中国北京")
    console.log(result)


    //清除set
    mySet.clear()
    // console.log(mySet)

    //forEach循环
    mySet.forEach(item => {
      console.log(item)
    })


    /*判断数据是否可迭代*/
    var arr = ["北京", "上海", "广州", "深圳"]
    console.log(arr)

    //迭代器
    // var iterator = arr[Symbol.iterator]()
    // // console.log(result)
    console.log(iterator.next())
    console.log(iterator.next())
    console.log(iterator.next())
    console.log(iterator.next())
    console.log(iterator.next())

6. Map数据类型

  • map与Object非常类似
  • map与Object的最大区别是:map的key可以是任何数据类型,object的可以只能是字符串

6.1 创建空map

  //创建空map
  let dic = new Map()

  // //map的key可以是任何数据类型
  dic.set("uname", "张三")
  dic.set("age", 21)
  dic.set({}, "个人信心")
  dic.set(function () { }, "我会说话")
  dic.set(true, "是否考试通过")
  console.log(dic)


  // // console.log(dic.size)

  // //添加
  dic.set("uname", "张三")
  dic.set("address", "北京")


  //获取
  console.log(dic.get("uname"))
  console.log(dic)

  //删除
  dic.delete("uname")
  console.log(dic)

  //清空
  dic.clear()
  console.log(dic)

  //遍历
  dic.forEach((item, index) => {
    console.log(item, index)
  })

  console.log(dic)
  for (v of dic) {
    console.log(v)
  }

6.2 初始化map

传入一个二维数组

  // var obj = { "uname": "张三", "age": 21 }
  // console.log(obj)


  //初始化map的时候,里面有值
  // let dic =new Map({uname:"张三"})
  // let dic = new Map([{ uname: "张三" }])
  let dic = new Map([["uname", "张三"], ["age", 21]])
  // console.log(dic)

7. 模块化编程

注意:

1.html文件中,script标签的type设置成module

2.用live-server访问html文件,不能用绝对路径访问html文件

7.1代码

./js/m1.js

//分别暴露
export let uname = "张三"
export let age = 21

js/m2.js

//统一暴露
let uname = "张三"
let age = 21;

let say = function () {
  return "我能说话"
}

export { uname, age, say }

js/m3.js

//统一暴露
let uname = "张三"
let age = 21;

let say = function () {
  return "我能说话"
}

export { uname, age, say }

index.html

  <script type="module">
    import * as a from "./js/m1.js"
    // console.log(a)
    // console.log(a.uname, a.age)


    // import * as b from "./js/m2.js"
     console.log(b.age, b.uname, b.say())

    import * as c from "./js/m3.js"
    // 

    console.log(c.default.uname,c.default.age)



  </script>

8.async和await

function middle() {

    //用Promise把函数逻辑包裹起来(包一个壳)
    return new Promise((resolve, reject) => {

        setTimeout(() => {
            // console.log(200)
            resolve(200)
        }, 1000);

    })
}

//async:表示main这个函数里面有异步编程
async function main() {

    //第1步:打印100
    console.log("100")

    //第2步:等待1秒钟,打印200
    //await表示:遇到异步编程,得等一等
    await middle().then(res => {
        console.log(res)
    })

    //第3步:打印300
    console.log("300")
}

//调用main函数
main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值