首页 > 其他分享 >js的String对象

js的String对象

时间:2024-03-30 12:05:05浏览次数:17  
标签:Index arr String 对象 js ++ let 数组 Cards

文章目录

1. 概念

用于处理文本(字符串)的对象。

2. 方法

方法作用
charAt()返回在指定位置的字符。
indexOf()返回首次出现的位置。
substr()有两个参数:下标,数目
substring()有两个参数:开始,结束,包头不包尾
replace()查找匹配的子串,并替换子串。
replaceAll()查找匹配的子串,并替换所有的子串。
split()根据分隔符把字符串分割为字符串数组
toLowerCase()把字符串转换为小写
toUpperCase()把字符串转换为大写
startsWith()查看字符串是否以指定的子字符串开头
endsWith()查看字符串是否以指定的子字符串结尾
trim()去除字符串两边的空白

3. 检验 QQ

写一个方法校验 qq 号

  1. 必须是 5-15 位
  2. 第一位不能是 0
  3. 全部都是数字

3.1. 传统方式

      function checkQQ(qqNumber) {
        // 1.必须是5-15位
        let len = qqNumber.length;
        if (len < 5 || len > 15) {
          return false;
        }

        // 2,第一位不能是0
        if (qqNumber.startsWith("0")) {
          return false;
        }

        // 3.全部都是数字
        for (let i = 0; i < qqNumber.length; i++) {
          if (isNaN(qqNumber[i]) == true || qqNumber[i] == " ") {
            return false;
          }
        }
        return true;
      }
      //调用方法
      let res = checkQQ("45622");
      console.log(res);
    </script>

3.2. 正则方式

正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具。

function checkQQ(qqNumber) {
  // 创建正则表达
  let reg = /^[1-9]\d{4,14}$/;

  //调用正则对象的校验方法
  let res = reg.test(qqNumber);
  return res;
}

let res = checkQQ(12343156789);
console.log(res);

可以下载any-rule这个插件,用来生成正则表达式。

4. 扑克牌洗牌

  • 洗牌的 js 实现原理就是从数组中随机抽出一个元素,然后把这个随机抽出的元素与数组的最后的元素交换,用这样的方式来表示它已经被随机过了。
  • 同时被换过的那个元素就跑到数组的前面去了,这样它就可以继续被随机选到。这样经过一轮循环后,数组就还有 n-1 个数没有被随机过。
  • 直到循环到数组的第一个元素,数组里的元素就完成了随机排序。
    <script>
      /* 获取扑克牌:返回制作好的扑克牌 */
      function getPoker() {
        //定义花色 和 数字
        let array1 = ["♠", "♥", "♦", "♣"];
        let array2 = [
          "2",
          "3",
          "4",
          "5",
          "6",
          "7",
          "8",
          "9",
          "10",
          "J",
          "Q",
          "K",
          "A",
        ];

        //定义一个数组存放扑克牌
        let arr = [];

        //遍历花色和数组进行拼接
        let index = 0;
        for (let i = 0; i < array1.length; i++) {
          for (let j = 0; j < array2.length; j++) {
            //console.log(array1[i]+array2[j])
            arr[index] = array1[i] + array2[j];
            index++; //索引递增
          }
        }

        //在加上大王 小王
        arr[index++] = "大王";
        arr[index++] = "小王";

        //打印扑克牌
        //console.log(arr)

        //返回制作好的扑克牌
        return arr;
      }

      /* 洗牌
            洗牌的js实现原理就是从数组中随机抽出一个元素,然后把这个随机抽出的元素与数组的最后的元素交换,用这样的方式来表示它已经被随机过了。
            同时被换过的那个元素就跑到数组的前面去了,这样它就可以继续被随机选到。这样经过一轮循环后,数组就还有n-1个数没有被随机过,
            直到循环到数组的第一个元素,数组里的元素就完成了随机排序

            [1,2,3,4,5]
          */
      function shufPoker(arr) {
        //使用i--循环,从后面往前面替换(从最后一个元素开始替换)
        for (let i = arr.length - 1; i > 0; i--) {
          //先生成一个随机索引范围([0, arr.length -1] 也就是 [0,i])
          let randomIndex = Math.floor(Math.random() * (i + 1));
          //将 找到随机元素(arr[randomIndex]) 和 数组最后一个元素(arr[i]) 进行交换
          //  let temp = arr[randomIndex]
          //  arr[randomIndex] = arr[i]
          //  arr[i] = temp

          [arr[i], arr[randomIndex]] = [arr[randomIndex], arr[i]];
        }
        return arr;
      }
      //简单测试一下
      //console.log(shufPoker([1,2,3,4,5]))

      /*
              分发扑克牌:参数要传一个扑克牌的数组
          */
      function dealPoker(arr) {
        //初始化4个数组
        let palyerA_Cards = [];
        let palyerB_Cards = [];
        let palyerC_Cards = [];
        let bottom_Cards = [];

        //初始化4个索引,用于添加元素的
        let palyerA_Index = 0;
        let palyerB_Index = 0;
        let palyerC_Index = 0;
        let bottom_Index = 0;

        //遍历前51张扑克牌,添加到不同的玩家数组中
        for (let i = 0; i < arr.length - 3; i++) {
          //最后三张牌不用遍历,将来要放到底牌中
          if (i % 3 == 0) {
            palyerA_Cards[palyerA_Index] = arr[i];
            palyerA_Index++;
          } else if (i % 3 == 1) {
            palyerB_Cards[palyerB_Index] = arr[i];
            palyerB_Index++;
          } else {
            palyerC_Cards[palyerC_Index] = arr[i];
            palyerC_Index++;
          }
        }

        //遍历最后3张牌添加到底牌数组中
        for (let i = arr.length - 3; i < arr.length; i++) {
          bottom_Cards[bottom_Index] = arr[i];
          bottom_Index++;
        }

        console.log("玩家A的牌是:", palyerA_Cards);
        console.log("玩家B的牌是:", palyerB_Cards);
        console.log("玩家C的牌是:", palyerC_Cards);
        console.log("底牌是:", bottom_Cards);
      }

      //调用刚才创建好的两个方法,完成发牌动作
      //先调用第一个函数,获取创建好的扑克牌
      let poker = getPoker();

      //调用洗牌的方法
      let newPoker = shufPoker(poker);

      //传入刚才洗好的扑克牌,分发扑克
      dealPoker(newPoker);
    </script>

标签:Index,arr,String,对象,js,++,let,数组,Cards
From: https://blog.csdn.net/dongxiaod1/article/details/137169585

相关文章

  • Node.js入门:常用命令一览
    I.引言A.介绍Node.js的概念和应用场景Node.js是一个开源的、跨平台的JavaScript运行时环境,它可以用于服务器端的JavaScript应用程序开发。Node.js具有高性能、轻量化、易使用的特点,在Web应用、网络服务、数据交换等多个领域有着广泛的应用。Node.js使用事件驱动、非阻塞I/O......
  • node.js 入门案例 安装教程
    前言Node.js是一个基于ChromeJavaScript运行时建立的一个平台。Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。可以让JavaScript在服务器端运行。它具有轻量级、高效、事件驱动、非阻塞I/O等特点,被广泛应......
  • MogDB/openGauss学习笔记-获取对象DDL
    MogDB/openGauss学习笔记-获取对象DDL本文出处:https://www.modb.pro/db/399230内置函数omm2=#\df*defListoffunctionsSchema|Name|Resultdatatype|......
  • Json文件格式及Cpp解析
    JSON(JavaScriptObjectNotation)用于存储和传输数据,通常用于服务器-->Web端的数据传输JSON示例:{"employees":[{"firstName":"John","lastName":"Doe"},{"firstName":"Anna","lastN......
  • toLocaleString 将字符串、日期、数字、数组等对象的本地化
    toLocaleString() 是JavaScript中许多对象(包括 Number、Date 和数组)的一个方法。这个方法返回一个字符串,该字符串表示该对象的本地化版本。这通常意味着它会考虑运行代码的环境的语言和地区设置,来生成一个更易读或更符合当地习惯的字符串表示。对于 Number:当对 Number ......
  • 【Java系列】JSP 基础 | JSP执行原理
    01、JSP执行原理JSP同Servlet一样,都运行在Servlet容器中。当用户访问JSP页面时,.JSP页面的处理过程如图4-2所示。图4-2所示的JSP执行过程可分为五个步骤。(1)客户端向服务器发送JSP页面请求。(2)容器接收到请求后检索对应的JSP页面,如果该JSP页面(或被修改后的JSP页面)是第一......
  • Vuex的核心组成、版本问题及store.js的使用、 Vuex中存值、取值以及获取变量值、异步
    Vuex的核心组成、版本问题及store.js的使用、Vuex中存值、取值以及获取变量值、异步同步操作和Vuex后台交互  //store//初始值//设置值mutations  ---this.$store.commit('setDemoValue方法名',value); //更新值action --this.$store.disp......
  • 对于拷贝普通对象 深拷贝和浅拷贝是否一样
    对于拷贝普通对象(即不包含嵌套对象或数组的对象),深拷贝和浅拷贝在最终结果上可能是相同的。这是因为普通对象通常只包含基本数据类型(如数字、字符串、布尔值)的属性,这些基本数据类型在赋值时是直接复制的,而不是引用。在浅拷贝中,对象的属性值被复制到新对象中。由于这些属性值是基本......
  • JS 日期计算 天数加减、月数加减
    JS日期计算天数加减、月数加减addDays(date,days){//给指定日期增加天数if(!days){returndate;}letdateArr=date.split('');date=newDate(newDate(date).setDate(newDate(date).getDate()+days));varyear=date.getFu......
  • 直播软件开发,利用对象池实现内存占用优化
    直播软件开发,利用对象池实现内存占用优化对象池是一种重复使用对象的机制,而不是频繁地创建和销毁对象。通过对象池,可以避免创建大量的临时对象,减小对象数量,从而减少直播软件开发中内存占用和垃圾回收的压力。importjava.util.concurrent.ArrayBlockingQueue;importjava.ut......