首页 > 其他分享 >(4.3)数组、对象及类数组对象,set的用法,正则表达式的常用方法,蓝桥杯备赛-(生成数组、数组去重、实现模板字符串的解析、新课上线啦)

(4.3)数组、对象及类数组对象,set的用法,正则表达式的常用方法,蓝桥杯备赛-(生成数组、数组去重、实现模板字符串的解析、新课上线啦)

时间:2023-04-03 21:02:49浏览次数:49  
标签:set console log height 蓝桥 width 数组 margin

1.1数组、对象及类数组对象

1.数组:

​ 数组是有序的数据集合,其中的索引值从0开始递增,并且数组有length属性,可以获取数组内的元素个数,其中的值可以是任何的数组类型。

2.对象:

​ 对象是无序的是由一个或多个键值对组成的数据集合,对象没有length属性。

3.伪数组(类数组对象):

​ 类数组对象首先它还是一个对象,但是它具有对象的某些特点。以下特征:

  • ​ 类数组对象中的键(属性名)都改为从0开始递增的数值型或字符串型的数字,也就是说该属性名可以加引号也可以不加。

  • ​ 该类数组对象必须拥有length属性,由于指定数组的长度,若没有该属性,那么转化为数组后就是一个空数组。

  • ​ 不能调用数组上的方法。

4.类数组对象转化为数组的方法:

​ (1).Array.from:

        let arrayLike={
            '0':'李华',
            '1':15,
            '2':'班长',
            '3':['英语','语文','数学'],
            length:4
        }
        let arr=Array.from(arrayLike)
        console.log(arr)//['李华', 15, '班长', ['英语','语文','数学']]
        console.log(Object.prototype.toString.call(arrayLike))//[object Object]
        console.log(Object.prototype.toString.call(arr))//[object Array]

​ (2).拓展运算符:

        function fn(){
            console.log(arguments)//Arguments(5) [1, 2, 3, 4, 5]
            console.log(Object.prototype.toString.call(arguments))//[object Arguments]
            // 此时使用拓展运算符,将其转化为真正的数组
            console.log([...arguments])//[1, 2, 3, 4, 5]
            console.log(Object.prototype.toString.call([...arguments]))//[object Array]
        }
        fn(1,2,3,4,5)

​ (3).数组方法:

        // 使用数组的slice方法
        let sliceResult=Array.prototype.slice.call(arrayLike)
        console.log(sliceResult)//['李华', 15, '班长', ['英语','语文','数学']]
        console.log(Object.prototype.toString.call(sliceResult))//[object Array]

        // 使用数组的splice方法
        let spliceResult=Array.prototype.splice.call(arrayLike,0)//['李华', 15, '班长', ['英语','语文','数学']]
        console.log(spliceResult)
        console.log(Object.prototype.toString.call(spliceResult))//[object Array]

1.2set的用法

1.定义:

​ set是ES6新增的一种数据类型,类似于数组,但它的一大特性就是其中所有的元素都是唯一的,没有重复的值,相当于集合的存在。我们一般使用set来进行数组、字符串等的去重以及得出并集、交集及差集。

2.基本使用:

        let list=new Set([1,2,10,15])
        // 使用add()添加元素
        list.add(3)
        console.log(list)
        // 可同时添加多个,但是要注意的是如果该元素已经存在,就不会再添加。
        list.add(4).add(5)
        console.log(list)

        // 使用detele()进行元素的删除
        list.delete(3)
        console.log(list)

        // 使用has()判断某元素是否存在,返回true或者false
        let result=list.has(5)
        console.log(result)//true

        // 使用clear()清除所有元素
        list.clear()
        console.log(list)//{}

3.常见用法:

        let a=new Set([1,2,3])
        let b=new Set([3,4,5])

        // 求并集
        let union=new Set([...a,...b])
        console.log(union)//{1, 2, 3, 4, 5}

        // 求交集
        let jiaoji = new Set([...a].filter(x => b.has(x)))
        console.log(jiaoji)//{3}

        // 求差集
        let chaji = new Set([...a].filter(x => !b.has(x)))
        console.log(chaji)//{1, 2}

1.3正则表达式

1.正则表达式的常用方法:

  • ​ (1).text()使用正则去匹配字符串,返回true或flase。
  • ​ (2).search()使用正则去匹配字符串,匹配成功返回第一个匹配成功的位置,匹配失败返回-1。
  • ​ (3).match()使用正则去匹配字符串,匹配成功返回成功的数组,匹配失败则返回null。
  • ​ (4).replace()使用正则去匹配字符串,匹配成功的使用新的字符串替换。
        // 1.text()使用正则去匹配字符串,返回true或flase。
        var reg = /\$/
        var result = reg.test('${name}')
        console.log(result)//true

        // 2.search()使用正则去匹配字符串,匹配成功返回第一个匹配成功的位置,匹配失败返回-1。
        var reg1 = /\&/
        var str = 'name&age'
        var result1 = str.search(reg1)
        console.log(result1)//4

        // 3.match()使用正则去匹配字符串,匹配成功返回成功的数组,匹配失败则返回null。
        var str1 = "dgfhfgh254bhku289fgdhdy675";
        var reg2 = /\d+/g;
        var result2=str.match(reg2)
        console.log(result2);

        // 4.replace()使用正则去匹配字符串,匹配成功的使用新的字符串替换。
        var str2='aaabbbccc'
        var reg3=/b/g
        var result3=str2.replace(reg3,'z')
        console.log(result3)//aaazzzccc

2.相关问题及解决

3.学习拓展

3.1生成数组

1.常用写法:

function createArr(n) {
  let list =[]
  for(var i=1;i<n+1;i++){
    list.push(i)
  }
  return list
}

2.使用Array.from的写法:

function createArr(n) {
  return Array.from({ length: n }, (item, i) => i + 1);
}

3.2数组去重

1.常用写法:

function myUniq(arr) {
    let result=[]
  arr.forEach(item => {
    if(result.indexOf(item)==-1){
        result.push(item)
    }
  });
  return result
}

2.使用set的写法:

function myUniq(arr) {
  return Array.from(new Set(arr));
}

3.3实现模板字符串解析

function strRender(str, data) {
  // 补充代码

  // 使用正则找出{}
  let re=/\$\{(\w+)\}/

  // 判断其中是否含有{}中的内容
  if(re.test(str)){
      // 使用match进行执行查找,并将包含查找的结果作为数组返回
      let key=str.match(re)[1]

      // 将str进行替换,在data中找出对象key的value值进行替换
      str=str.replace(re,data[key])

      // 使用递归继续调用自身的方法,直到str中{}都被替换完毕
      return strRender(str,data)
  }
  return str
}

3.4新课上线啦(页面设计)

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>新课上线啦</title>
  <link rel="stylesheet" href="css/style.css" />
</head>

<body>
  <!-- TODO:待补充代码 -->
    <div class="headContainer" >
      <div class="headWord"></div>
      <div class="longContainer">
        <div class="leftBigC">
          <div class="leftC">
            <img class="smallImg" src="./images//shouzhi.png" alt="">
            <p class="smallWard">扫描资讯</p>
          </div>
          <div class="longWard">
            购买成功后,一定要扫码添加班主任,获得<a class="inner">Java进阶资料</a>,并加入学习群,不错过直播课。
          </div>
        </div>
        <div class="rightC">
          <img src="./images/erweima.png" alt="">
        </div>
      </div>
    </div>

    
    <div class="centerC">
      <img class="centerimg1" src="./images/left.png" alt="">
    </div>

    <div class="centerC1">
      课程大纲
    </div>

    <div class="centerC2">
      <img class="centerimg1" src="./images/right.png" alt="">
    </div>


    <div class="footC">
      <div class="bigC">
        <div class="topC">
          <div class="left"></div>
          <div class="right"></div>
        </div>
        <div class="BottomC"></div>
      </div>
    </div>
</body>

</html>
/* TODO:待补充代码 */
* {
    margin: 0;
    padding: 0;
    /* background-color: #F8FAFB; */
}

.headContainer {
    width: 1920px;
    height: 500px;
    background-image: url(../images/bg.png);
    position: relative;
}

.headWord {
    background-color: none;

    position: absolute;
    /* background-color:#ffffff; */
    width: 880px;
    height: 279px;
    margin: 100px 520px;
    background-image: url(../images/word.png)
}

.longContainer {
    position: absolute;
    height: 120px;
    width: 1200px;
    margin: 440px 360px;
    background-color: aqua;
    background-image: url(../images/small-bg.png)
}

.leftC {
    display: flex
}

.smallImg {
    height: 22px;
    width: 18px;
    /* margin: 34px 174px; */
    margin-top: 34px;
    margin-left: 174px;
}

.smallWard {
    height: 20px;
    width: 80px;
    margin-left: 10px;
    margin-top: 35px;
    color: #1E5EF5;
}

.longWard {
    height: 18px;
    width: 700px;
    margin-left: 172px;
    margin-top: 13px;
}

.inner {
    display: inline;
}

.longContainer {
    display: flex;

}

.rightC {
    height: 84px;
    width: 84px;
    margin-top: 18px;
    margin-right: 169px;
}

.inner {
    color: #1E5EF5
}

.centerC {
    height: 10.67px;
    width: 16.06px;
    margin-top: 128px;
    margin-left: 874px;
}

.centerimg1 {
    height: 100%;
    width: 100%;
}

.centerC1 {
    width: 104px;
    height: 26px;
    margin-top: -12px;
    margin-left: 908px;
    font-family: PingFangSC-Semibold;
    font-size: 26px;
    color: #1E5EF5;
    letter-spacing: 0;
    line-height: 26px;
    font-weight: 600;
    /* background-color: #1E5EF5; */
}

.centerC2{
    height: 10.67px;
    width: 16.06px;
    margin-top: -25px;
    margin-left: 1030.94px;
}

.footC{
    position: relative;
    width: 1200px;
    height: 456px;
    background-color: #ffffff;
    margin-top: 121px;
    margin-left: 360px;
    margin-bottom: 60px;
}
.topC{
    display: flex;
    position: absolute;
    width: 804px;
    height: 211px;
    background-color: ffffff;
    margin-left: 200px;
    margin-top: 48px;
    justify-content: space-between;
}

.BottomC{
    position: absolute;
    width: 804px;
    height: 106px;
    background-color: #1E5EF5;
    margin-left: 200px;
    margin-top: 310px;
}
.left{
    width: 390px;
    height: 211px;
    background-color: bisque;
}   
.right{
    width: 390px;
    height: 211px;
    background-color: bisque;
}

4.学习总结

今天主要还是进行蓝桥杯的备赛,主要是完成了ES6语法的几个小练习:生成数组、数组去重、实现模板字符串的解析;以及一个页面省级的模拟题—新课上线啦。其中涉及到的知识点主要有:1.数组、对象以及类数组对象 2. set的用法 3.正则表达式的相关常用方法 4.页面设计的相关样式使用。

今天主要的难点是关于ES6的一些新特性的学习,因为这些内容平时很少涉及所以用到的就很少,也很少会进行系统的学习,今天就较为系统的学习了其中的伪数组以及Set的使用。1.伪数组:首先伪数组又称类数组对象,所以伪数组本质上还是一个对象,,只是其中的key都是从0开始递增数值型或字符串型的数字,并且其中必须包含length的键值对,若无则转换后为一个空数组。以及将位数组转换为一个真正的数组可以使用Array.from方法、拓展运算符以及数组的一些常用方法例如slice。2.Set:set的用法类似于数组,但是它其中所有的元素都是唯一的,所以常常使用set进行数组的去重。主要是学习了使用set进行数组或字符串等的去重以及求出其中并集、交集或差集等。

综上所述,今天学习的内容不是很多,其中主要的重难点是与ES6的一些新特性相关的知识点。以及在页面设计上花费的时间比较多也不是很熟练,需要多加练习。

标签:set,console,log,height,蓝桥,width,数组,margin
From: https://www.cnblogs.com/haozhaotou/p/17284391.html

相关文章

  • 启动redis时,告警日志中出现“The TCP backlog setting of 511……”以及“overcommit_
    问题描述:启动redis时,告警日志中出现“TheTCPbacklogsettingof511……”以及“overcommit_memoryissetto0…..”警告,如下所示:系统:rhel7.9数据库:redis6.2.61、异常重现[[email protected]]#redis-serverredis6379.conf[root@leo-redis626-aredis-6.......
  • 二维数组-杨辉三角
    输入:5输出:1 11 121 1331 14641 #include<iostream>#include<cstring>usingnamespacestd;intmain(){/*111121133114641*/inta[101][101]={};intn;scanf("%d",&am......
  • 汇编中数组的加法运算-包含进位
    ;***************************************************************TITLE数组求和;***************************************************************;***************************************************************;*程序的运行环境,最低环境是386,数据段和代......
  • 给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的
    /***给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。**你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。**你可以按......
  • 【LBLD】二维数组的花式遍历技巧
    【LBLD】二维数组的花式遍历技巧151.反转字符串中的单词思路:反转整个字符串然后反转每个单词classSolution{public:stringreversePartString(strings,inta,intb){if(a<0||b>=s.size()){cout<<"索引错误!"<<endl;......
  • PUG_关于if 判断和循环对象数组的使用
    PUG_关于if判断和循环对象数组的使用#contentiffollowList.length>0eachvalinfollowList.followingGroupsectionimg.avatarUrl(src=`${val.avatarUrl}`,alt='')......
  • java稀疏数组实现实例
    没有原理讲解,仅记录一个实现代码,作为参考和笔记使用如题,稀疏数组仅在原始数组有效数据较少的情况下起压缩空间的作用实现过程:首先为了方便查看和确认,封装一个打印二维数组的方法publicstaticvoidprintArray(int[][]arrays){for(int[]array:arrays){......
  • 最快速度求两个数组之交集算法
    该题目来自58同城的二面,用最快速度求两个数组之交集算法。比如A={6,2,4,1},B={2,9,4,3},那么A&B={2,4}。算法一:在大多数情况,也就是一般的情况下,大家都能想出最暴力的解法,通常也就是采用遍历或者枚举的办法来解决问题。该题需要找出两个数组的交集,最简单的一个办法就是用A数......
  • redis使用setnx+lua实现分布式锁
    在Redis中,使用SETEX命令(对应RedisTemplate的setIfAbsent方法)可以实现一个最简易的分布锁。SETEX命令当key不存在的话,才会设置key的值,如果可以已经存在,就不做任何操作。为了避免锁无法被释放,就给这个key(也就是锁)设置一个过期时间。为了保证解锁操作的原子性,使用Lua脚本进行释放锁......
  • 从C#中的数组中删除指定元素的几种方法,超简单
    最近小编同事面试遇到了一道面试题,题目是有个int数组,把输入包含的指定元素删除。这道题主要考察C#基础知识和编码动手能力。小编将以如下几种方法实现,供大家参考。(注:文末还有扩展问题。)1、使用临时数组copy后替换这种方法涉及创建一个比原始数组小一个元素的新数组。然后,将原始......