【Javascript Day12】数组操作方法及String规则和方法

目录

数组的操作方法

循环删除案例

String的规则

String的内置规则

String案例

String的常用方法


数组的操作方法

var names = ["涛","潇然","烨霖","聪健","立辉"];
        
        // 1. 数组变量.toString 方法 :数组转换为字符串
        //       转换规则:将数组的每个元素都单独加载,并通过 , 进行拼接
        //       自动触发:当数组和其它元素使用 + 进行字符串拼接时,会自动调用toString
        var temp1 = names.toString();
        console.log(names);
        console.log(temp1);

        var temp2 = names + "-字符串";
        console.log(temp2);
        
        // 2. 数组变量.join(splitStr) : 将数组中每个元素单独取出,并通过指定的splitStr字符进行拼接
        //         参数 splitStr 默认值 ,
        var temp3 = names.join();
        console.log( temp3 );

        var temp4 = names.join("#");
        console.log(temp4);
        
        // 3. 数组变量.concat() :将两个数组合并成一个数组
        //    + (method) Array<string>.concat(...items: ConcatArray<string>[]): string[]
        //      ( 方法 )  调用方法的对象类型.concat( 参数:参数类型,参数:参数类型 ):方法返回值类型
        //      ( 方法 )  调用方法的对象类型.concat( ...参数:参数类型 ):方法返回值类型
        //                                       ...任意数量的参数
        var arr1 = ["潘阳市","尹原市","宁 泽洋安市","衡 胤祥","吉 峻熙"]
        var arr2 = ["Cambridgeshire","Avon","Bedfordshire","Berkshire"]
        var arr3 = [100,100,100,100,100]

        var newArr = [];
        for (var i = 0; i < arr1.length; i++) {
            newArr.push( arr1[i] );
        }
        for (var i = 0; i < arr2.length; i++) {
            newArr.push( arr2[i] );
        }
        console.log(newArr);
        // concat 方法其实就是上述循环操作的 简化操作 [语法糖]
        var newArr1 = arr1.concat( arr2 );
        console.log(newArr1);
        console.log( "arr1:",arr1 );
        console.log( "arr2:",arr2 );

        var newArr2 = arr1.concat(arr2,arr3);
        console.log(newArr2);
        
        var newArr3 = arr3.concat(arr2,arr1);
        console.log(newArr3);
        

        // 4. 数组变量.slice(start?: number, end?: number) 从指定数组中截取一段元素组成新得数组 => 不改变原始数组
        //                      ? 表示参数可以传递可以不传递,多个?描述参数时,
        //                        只有在前面得?传递得情况下,才会触发后续参数可传或不传得特性
        //          参数
        //             + 正向截取
        //                 start 需要截取得数组元素得起始下标
        //                 end 需要截取得数组元素得终止下标
        //             + 逆向截取
        //                 start 取值为负数,表示倒数第几个元素
        //                 end 取值为负数,表示倒数第几个元素
        // 5. 数组变量.splice(start: number, deleteCount?: number) 从指定数组中截取一段元素组成新得数组 => 改变原始数组
        //    数组变量.splice(start: number, len?: number) 从指定数组中截取一段元素组成新得数组
        //          参数 start 设置截取得起始下标
        //              deleteCount|len 个数

        var nums = [1,2,3,4,5,6,7,8,9];

        var newArr4 = [];
        for (var i = 2; i < 6; i++) {
            newArr4.push( nums[i] )
        }
        console.log(newArr4);
        // 上述操作可以通过 slice 或者 splite 方法完成

        var nums1 = [1,2,3,4,5,6,7,8,9];
        var newArr5 = nums1.slice( 2,6 );  // [2,6)  从下标2截取到下标5
        console.log( newArr5 );

        var nums2 = [1,2,3,4,5,6,7,8,9];
        var newArr6 = nums2.slice( -4,-2 ); // [-4,-2) 从倒数第4个元素截取到倒数第3个元素
        console.log( newArr6 );
        
        var nums3 = [1,2,3,4,5,6,7,8,9];
        var newArr7 = nums3.slice( -2,-4 ); // 截取范围不存在相交区域时,返回空数组
        console.log( newArr7 );

        var nums4 = [1,2,3,4,5,6,7,8,9];
        var newArr8 = nums4.splice(2,3); // 从下标2开始截取三个元素
        var newArr8 = nums4.splice(2,3); // 从下标2开始截取三个元素
        console.log(newArr8);
        console.log( "nums4:",nums4 );

        var nums5 = [1,2,3,4,5,6,7,8,9];
        // 使用splice删除特性,完成数组指定位置得元素删除
        //     => 影响数组得长度,和被删除元素后续元素得下标
        //     => 循环删除时对数组得影响
        nums5.splice(3,1) 
        console.log(nums5);

循环删除案例

var nums = [1,22,31,23,42,16,21,45];
        // 使用普通循环,将数组中得 偶数元素删除
        //    !!! 下标得变化
        for (var i = nums.length-1; i >=0 ; i--) {
            if( nums[i]%2==0 ) nums.splice(i,1);
        }
        console.log(nums);
        
        var nums1 = [1,22,31,23,42,16,21,45];
        for (var i = 0; i < nums1.length; i++) {
            if( nums1[i]%2==0 ){
                nums1.splice(i,1);
                i--;
            }
        }
        console.log(nums1);


String的规则


 // 栈:内存大小有限 [ number,boolean,null,undefined ]
        // 堆:理论上是无限的

        console.log( Number.MAX_VALUE ); // => number 会存在一个数值上限
        
        // 引用变量通过地址,指向堆中空间,只要栈的地址没变,和改地址有关变量都会产生关联
        var arr1 = [1,2,3,4];
        var arr2 = arr1;
        arr1[0] = 999;
        console.log(arr1);
        console.log(arr2);


        // 将string当作基本类型数据理解,但实际上string是引用类型数据 
        //      => string被JS设置成包装类型 => 不可修改,不可变数据
        var str = "文本数据文本数据文本数据文本数据文本数据文本数据文本数据文本数据文本数据";
        var str1 = str; // 将str数据复制一份,并分配给str1
        str = "abc"; // 重新创建一个新的空间
        console.log(str);
        console.log(str1);

String的内置规则

var str1 = "abcdefg";
        // 1. 字符串变量.length : 获取字符串的字符长度
        //    => 字符串是由字符组成,所以JS中会为字符串的每个字符都分配标识(下标索引)
        console.log( str1.length );
        // [下标] 从字符串中取值 和 数组的使用方式存在 代码阅读冲突
        console.log( str1[0] );
        
        
        // 2. 字符串变量.at(pos) 通过下标获取字符串对应的字符
        //      pos 取正数 表示下标
        //      pos 取负数 表示倒数位置
        console.log( str1.at(0) );
        console.log( str1.at(-1) );
        
        
        for (var i = 0; i < str1.length; i++) {
            console.log( str1.at(i) );
        }

        // 将字符串进行反转
        var str2 = "abcd"; // ==> dcba
        var tempStr2 = "";
        for (var i = str2.length-1; i >=0; i--) {
            tempStr2 += str2.at(i);
        }
        console.log(tempStr2);
        
        
        // 3. 字符串变量.charAt(index);
        //        index 为下标
        var str3 = "abcdefg";
        console.log( str3.charAt(0) );
        console.log( str3.charAt(1) );
        console.log( str3.charAt(-1) );


        // 4. 字符串变量.charCodeAt( index ) 返回是字符的ascii标识码
        var str4 = "abAdefg";
        console.log( str4.charCodeAt(0) );
        console.log( str4.charCodeAt(1) );
        console.log( str4.charCodeAt(2) );

        // utf8 叫做字符编码 => 不同语言字符是需要通过扩展字符编码实现计算机的使用
        //      utf8是软件工程统一的字符编码集【 中文 65535 个常用汉字 】 
        var str5 = "一段中文";
        console.log( str5.charCodeAt(0) );
        
        // 5. 字符串变量.codePointAt( index ) 返回是字符的ascii标识码
        var str6 = "abAdefg";
        console.log( str6.codePointAt(0) );

        // 6. 字符串变量.indexOf(字符或者字符串) 从左侧下标0开始向右查找 返回下标,不存在返回-1
        // 7. 字符串变量.lastIndexOf(字符或者字符串) 从右向左查找到下标0 返回下标,不存在返回-1
        var str7 = "abcabc";
        console.log( str7.indexOf("b") );
        console.log( str7.lastIndexOf("b") );
        
        // 6. 字符串变量.indexOf(字符或者字符串,开始查找的位置) 从左向右查找 返回下标,不存在返回-1
        // 7. 字符串变量.lastIndexOf(字符或者字符串,开始查找的位置) 从右向左查找 返回下标,不存在返回-1
        console.log( str7.indexOf("b",3) );

String案例

// ​ 案例:判断一个字符串 'abcoefoxyozzopp' 中出现次数最多的字符,并统计其次数var str = "oabcaefaoxyozzaopp";// var i1 = str.indexOf("a",0) // 0// var i2 = str.indexOf("a",i1+1) // 6// var i2 = str.indexOf("a",i2+1) // 6// 用于记录 最大次数和对应的 字符var maxChar = "";var maxNum = 0;for (var i = 0; i < str.length; i++) {// 循环依次获取每个字符var char = str.charAt(i);var count = 0;var j = -1;// 判断存在多少个当前循环到 char 字符do {// indexOf的第二个参数,可以限制查找范围j = str.indexOf(char,j+1);if(j!=-1){count++;}} while( j!=-1 );// console.log(char,count);// 和循环外部记录的最大值进行比较完成替换if(count>maxNum){maxNum = count;maxChar = char;}}console.log(maxChar,maxNum);

        // ​ 案例2:统计一个字符串 'abcoefoxyozzopp' 中每个字符出现的次数
        // var countObj = {
        //     a:2,
        //     c:3
        // }
        // console.log( countObj.b );
        // console.log( countObj.c ); // 从对象中取属性 c 的值
        // console.log( countObj["a"] ); // 从对象中取属性 a 的值

        // var key = "a";
        // console.log( countObj[key] ); // 从对象中取属性 a 的值
        // key = "c";
        // console.log( countObj[key] ); // 从对象中取属性 c 的值
        
        
        var str1 = "oabcaefaoxyozzaopp";
        var countObj1 = {};
        for (var i = 0; i < str1.length; i++) {
            var char = str1.charAt(i);
            // console.log(char);
            // console.log( countObj1[char] );
            if( countObj1[char] ){
                // countObj1对象中存在 char 变量值对应的属性名
                countObj1[char]++;
            }else{
                // countObj1对象中没有 char 变量值对应的属性名
                countObj1[char] = 1; // 将当前char增加为对象的新属性名,并取值1,标识出现1次
            }
        }
        console.log(countObj1);
        
        // 循环对象 => 获取次数最多的字符
        var maxChar1 = "";
        var maxCount1 = 0;
        for (var key in countObj1) {
            if( countObj1[key]>maxCount1 ){
                maxChar1 = key;
                maxCount1 = countObj1[key];
            }
        }
        console.log(maxChar1,maxCount1);

String的常用方法

// 1. toUpperCase() 将小写字母转换为大写字母
        var str1 = "abc中文123";
        console.log( str1.toUpperCase() );
        // 2. toLowerCase 将大写字母转换为小写字母
        var str2 = "ABC中文123";
        console.log( str2.toLowerCase() );

        // 3. substr(from: number, length?: number)
        //      from 指定开始截取的位置 [ 取值负数,表示倒数]
        //      length 指定截取的长度 [大于等于0]
        //      返回截取到的新字符串
        var str3 = "01234567";
        var tempStr3 = str3.substr(2,3);
        console.log(tempStr3);
        console.log("str3:",str3);

        var tempStr4 = str3.substr(-5,3);
        console.log(tempStr4);
        
        var tempStr5 = str3.substr(-5,-3);
        console.log(tempStr5);

        // 4. substring(start: number, end?: number)
        var str5 = "01234567";
        var tempStr5 = str5.substring(2,4); // [2,4)
        console.log(tempStr5);
        console.log("str5:",str5);

        // var tempStr6 = str5.substring(-4,-2);
        // console.log(tempStr6);
        

        // 5. slice(start?: number, end?: number)
        var str7 = "01234567";
        var tempStr7 = str7.slice(2,4);
        console.log(tempStr7);
        
        // 6. split(separator: string) 基于分割字符将字符串转换为数组
        //      separator 分割字符
        var str8 = "00-1-2-33-4-5-6-7";
        var arr8 = str8.split("-")
        console.log(arr8);
        
        var str9 = "0012334567"; // 将字符串按照字符进行数组转换分割
        var arr9 = str9.split("");
        console.log(arr9);

        var str10 = "hello";

        var arr10 = str10.split("");
        console.log(arr10);
        arr10.reverse();
        console.log(arr10);
        var newStr = arr10.join("");
        console.log(newStr);
        
        // 链式调用:前一个方法的返回值作为下一个方法的调用对象
        var newStr1 = str10.split("").reverse().join("");
        console.log(newStr1);
        

        // 7. replace(被替换的字符,替换成的字符) 只替换第一个
        // 7. replaceAll(被替换的字符,替换成的字符) 替换所有【和浏览器版本有关】

        var str11 = "字@符@串";
        var newStr11 = str11.replace("@","--");
        console.log(newStr11);
        
        var newStr12 = str11.replaceAll("@","--");
        console.log(newStr12);
        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/15535.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git rebase 和 git merge的区别

Rebase 可使提交树变得很干净, 所有的提交都在一条线上。 Merge 则是包含所有的调试记录&#xff0c;合并之后&#xff0c;父级的所有信息都会合并在一起 Rebase 修改了提交树的历史 比如, 提交 C1 可以被 rebase 到 C3 之后。这看起来 C1 中的工作是在 C3 之后进行的&#xf…

上马传奇新手起号攻略 上马传奇云手机开荒玩法

在上马传奇这款游戏中&#xff0c;我们可以选择合适的职业&#xff0c;参与各类玩法快速起号&#xff0c;今天就给大家一些攻略。 一、职业 1.游戏中的战士、法师、道士分别有三个分支&#xff0c;一共九个职业可以选择&#xff0c;选择之后不能转职&#xff0c;所以前期要慎重…

Redis 集群(Cluster)和基础的操作 部署实操篇

三主三从 集群概念 Redis 的哨兵模式&#xff0c;提高了系统的可用性&#xff0c;但是正在用来存储数据的还是 master 和 slave 节点&#xff0c;所有的数据都需要存储在单个 master 和 salve 节点中。 如果数据量很大&#xff0c;接近超出了 master / slave 所在机器的物理内…

【JavaScript】this 指向由入门到精通

this 的概念 this 在JavaScript 及其其他面向对象的编程语言中&#xff0c;存在的目的是为了提供一种在对象方法中引用当前对象的方式。 它为方法提供了对当前实例的引用&#xff0c;使得方法能够访问或者修改实例的成员变量。 注意点&#xff1a; this 的绑定和定位的位置…

C++ STL容器之vector的使用及复现

vector 1. 序列式容器 vector、list、deque、forward_list(C11)等STL容器&#xff0c;其底层为线性序列的数据结构&#xff0c;里面存储的是元素本身&#xff0c;这样的容器被统称为序列式容器。 2. vector容器 vector使用模板作为参数&#xff0c;所以在使用的时候必须将模…

算法15(力扣347)——前k个高频元素

1、问题 给你一个整数数组 nums 和一个整数 k &#xff0c;请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 2、示例 &#xff08;1&#xff09; 输入: nums [1,1,1,2,2,3], k 2 输出: [1,2] &#xff08;2&#xff09; 输入: nums [1], k 1 输出: [1…

项目质量管理体系及保证措施

项目质量管理体系的核心是建立标准化流程、强化全员参与意识、实施动态监控机制。其中&#xff0c;标准化流程是质量管理的基石。例如&#xff0c;某全球500强企业通过引入ISO 9001体系&#xff0c;将项目缺陷率降低了37%。标准化流程不仅能明确各环节的质量要求&#xff0c;还…

2025web寒假作业二

一、整体功能概述 该代码构建了一个简单的后台管理系统界面&#xff0c;主要包含左侧导航栏和右侧内容区域。左侧导航栏有 logo、管理员头像、导航菜单和安全退出按钮&#xff1b;右侧内容区域包括页头、用户信息管理内容&#xff08;含搜索框和用户数据表格&#xff09;以及页…

服务器ip被反垃圾列为黑名单

查询 BarracudaCentral.org - Technical Insight for Security Pros https://multirbl.valli.org/lookup/ 大概写&#xff1a;我不知道这个IP在我使用之前已被列入Barracuda信誉阻止列表&#xff08;BRBL&#xff09;。我不知道它之前列出的原因&#xff0c;但服务器现在有了…

2025影视泛目录站群程序设计_源码二次开发新版本无缓存刷新不变实现原理

1. 引言 本设站群程序计书旨在详细阐述苹果CMS泛目录的创新设计与实现&#xff0c;介绍无缓存刷新技术、数据统一化、局部URL控制及性能优化等核心功能&#xff0c;以提升网站访问速度和用户体验。 2. 技术概述 2.1 无缓存刷新技术 功能特点&#xff1a; 内容不变性&#x…

激活函数 05 ——Swish

Swish背景 发展阶段典型函数主要特性局限性早期阶段Sigmoid/Tanh平滑可导&#xff0c;输出有界梯度消失问题现代阶段ReLU计算高效&#xff0c;缓解梯度消失神经元死亡现象改进阶段LeakyReLU改善负区间响应参数敏感性新星阶段Swish/GELU自适应非线性计算复杂度略高 Swish激活函…

Tria Technologies RFSoC 平台 - 入门指南

Tria Technologies RFSoC 平台 - 入门指南 适用于 RFSoC Gen-3 的宽带毫米波无线电开发平台 该平台将 Otava 和 Avnet 联合开发的 Otava DTRX2 双收发器毫米波无线电卡与 AMD Xilinx Zynq UltraScale ™ RFSoC ZCU208 评估套件相结合。 5G 毫米波相控阵天线模块开发平台 …

Win11下搭建Kafka环境

目录 一、环境准备 二、安装JDK 1、下载JDK 2、配置环境变量 3、验证 三、安装zookeeper 1、下载Zookeeper安装包 2、配置环境变量 3、修改配置文件zoo.cfg 4、启动Zookeeper服务 4.1 启动Zookeeper客户端验证 4.2 启动客户端 四、安装Kafka 1、下载Kafka安装包…

白嫖RTX 4090?Stable Diffusion:如何给线稿人物快速上色?

大家都知道&#xff0c;在设计的初期&#xff0c;我们通常会先绘制草图&#xff0c;然后再进行上色处理&#xff0c;最终才开始进行最终的设计工作。在这个上色的过程中&#xff0c;配色是至关重要的一环。这不仅方便了内部同事的评审&#xff0c;也让产品方和客户可以直观地了…

从大规模恶意攻击 DeepSeek 事件看 AI 创新隐忧:安全可观测体系建设刻不容缓

作者&#xff1a;羿莉&#xff08;萧羿&#xff09; 全球出圈的中国大模型 DeepSeek 作为一款革命性的大型语言模型&#xff0c;以其卓越的自然语言处理能力和创新性成本控制引领行业前沿。该模型不仅在性能上媲美 OpenAI-o1&#xff0c;而且在推理模型的成本优化上实现了突破…

AMD 8845HS 780M核显部署本地deepseek大模型的性能

测试了一下笔记本电脑AMD 8845HS的780M核显是否能本地部署deepseek大模型。 测试软件环境&#xff1a;LM Studio 0.3.9 、Windows 11 24H2 硬件&#xff1a;荣耀X16笔记本 CPU&#xff1a;AMD 8845HS 显卡&#xff1a;780M核显&#xff0c;显存为共享内存自动分配模式&…

利用二分法进行 SQL 盲注

什么是sql注入&#xff1f; SQL 注入&#xff08;SQL Injection&#xff09;是一种常见的 Web 安全漏洞&#xff0c;攻击者可以通过构造恶意 SQL 语句来访问数据库中的敏感信息。在某些情况下&#xff0c;服务器不会直接返回查询结果&#xff0c;而是通过布尔值&#xff08;Tr…

《深度学习》——pytorch框架及项目

文章目录 pytorch特点基本概念 项目项目实现导入所需库下载训练数据和测试数据对训练和测试样本进行分批次展示手写图片判断pytorch是否支持GPU定义神经网络模型定义训练函数定义测试函数创建交叉熵损失函数和优化器通过多轮训练降低损失值得到最终结果注意 pytorch PyTorch 是…

【批量获取图片信息】批量获取图片尺寸、海拔、分辨率、GPS经纬度、面积、位深度、等图片属性里的详细信息,提取出来后导出表格,基于WPF的详细解决方案

摄影工作室通常会有大量的图片素材&#xff0c;在进行图片整理和分类时&#xff0c;需要知道每张图片的尺寸、分辨率、GPS 经纬度&#xff08;如果拍摄时记录了&#xff09;等信息&#xff0c;以便更好地管理图片资源&#xff0c;比如根据图片尺寸和分辨率决定哪些图片适合用于…

windows生成SSL的PFX格式证书

生成crt证书: 安装openssl winget install -e --id FireDaemon.OpenSSL 生成cert openssl req -x509 -newkey rsa:2048 -keyout private.key -out certificate.crt -days 365 -nodes -subj "/CN=localhost" 转换pfx openssl pkcs12 -export -out certificate.pfx…