ES6扩展字符串和数组

本文介绍了字符串原型上的常用方法和新增方法,如charAt()、includes()等,还给出了判断子串方法的封装示例及筛选应用。同时阐述了ES6数组扩展,包括创建方式、类数组转化、查找方法和fill()方法等,最后提供了深入学习链接。

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

新的方法出现时为了使功能更加完善和性能更加给力。

字符串原型上常用方法和新增方法:

charAt()方法   可返回指定位置的字符(包括空格)

String.prototype.charAt()
let str = 'asasa';
console.log(str.charAt(3)) //返回结果为s

charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。

方法 charCodeAt() 与 charAt() 方法执行的操作相似,只不过前者返回的是位于指定位置的字符的编码,而后者返回的是字符子串。

let str = 'asasa';
console.log(str.charCodeAt(3))//返回结果为unicode编码中s对应的编码

slice(A,B)    表示从字符串的A位子开始,截取当前B的长度(光标定位在B截取不包括B).B可以不填,默认返回从A开始后面的

let str = 'asasa';
console.log(str.slice(2,3))//返回结果为a

indexOf(A,B)   索引查找。A表示需要查找字符串的子集或自己。B代表要查找的开始位子(优化查找),结果返回查找到的最开始位子索引值。(但是现实中我们想要的是判断字符串中有没有他返回结果是true或者false

let str = 'as asa';
console.log(str.indexOf('sa',2)) //返回结果为4

自己封装一个判断子串方法 

String.prototype.isInclude  = function (str){
    if(this.indexOf(str)!==-1){
        return true
    }else{
        return false
    }
}
console.log('1234'.isInclude('12')); //返回结果为true

 

split('A')   方法用于把一个字符串分割成字符串数组。参数A为分割的标准A可以不填写。常常和split一起使用的还有数组上的Array.join()方法(用于把数组中的所有元素放入一个字符串,不传参默认逗号分割)。

let str = '1,2,3,4,5,6,7,8';
console.log(str.split(',')) //返回结果为一个数组。数组的每位还是一个单独的字符串

toUpperCase()  把字符串中有小写字母变成大写,其他数字汉字不变。

let str = 'nihao 123 好';
console.log(str.toUpperCase()) //返回结果把小写字母变成大写,其他不变。

toLowerCase()  把字符串中有大写的转化成小写,其他不变

let str = 'NIHAO 123 好';
console.log(str.toLowerCase()) //返回结果把大写字母变成小写,其他不变。

新增方法:

includes(A,B)  判断子串A在不在字符串中,B代表从哪个位子开始判断。结果返回true或者false

let str = '12213';
console.log(str.includes('12'));//返回结果true

startsWith(A,B)和 endsWith(A.B) 分别表示从B位子开始(不写默认开头和结尾),起始位子(结束位子)是不是A这个子串(从以下代码可以看出直接传入数字会发生类型转换)(适用:前缀和后缀的筛选和分类)

let str = '12213';
console.log(str.startsWith(12),str.endsWith(12));

小应用:筛选.定义一个数组,里面存放着不同字符串,先利用数组的筛选方法,在筛选函数中添加筛选规则

let arr = ['bai-A', 'lu-A', 'bai-B', 'lu-B', 'bai-C', 'lu-C']
let myfilter = arr.filter(ele => ele.startsWith('bai') && ele.endsWith('B'))

筛选规则:筛选出数组中元素以‘bai’开头并且是‘B’结尾的元素。

repeat(A)  把当前子串重复A次

let a = 'a'.repeat(10)
//输出结果为'aaaaaaaaaa'

模板字符串:`${xxx}`(``反撇号)${}中可以放原始值和引用值(引用值会调用自身类型的toString方法),表达式和函数执行

let ele = 'bai';
let ele1 = 'lll';
let str = `${ele} love ${ele1}`;
let  obj = {
    name:'xxx',
    age:'18'
};
let arr= [1,2,3,4];
let str = `${obj} + ${arr}`;
//结果为"[object Object] + 1,2,3,4"

和常用的字符串拼接,有很大的便利性。字符串拼接插入dom结构时。常用方法需要加转义字符来保证换行语法正确。

在模板字符串中就有了很大的便利性。

let ele = 'bai';
let ele1 = 'lll';
let str = `<div>
                <div>
                    <p>${ele}</p>
                </div>
            </div>`;

es6 数组扩展:

数组的创建方式:字面量和构造函数:

构造函数:

var  arr = new Array(8)  //数字且只有一个参数的时候,创建一个长度为8的数组(每个值为空empty)
var  arr1 = new Array('8') //非数字创建,创建一个数组['8']
var  arr2 = new Array('8',1,2) //多个参数,创建多个参数的数组

对于es6版本前的构造函数创建,不够人性化和语义化。

所以在es6中引入了Array.of //增强版数组,统一返回由参数构成的数组。

var arr = Array.of(8) 
var arr1 = Array.of('8') 
var arr2 = Array.of('8', 1, 2) 

类数组转化成数组:为了方便使用数组的方法

Array.from()和扩展运算符

Array.from()将两类对象转换为真正的数组:类似数组的对象和可遍历的对象

let odiv = document.getElementsByTagName('div');
let obj = {
    0: 'a',
    1: 'b',
    2: 'c',
    length: 3
}
let arr = Array.from(obj) //数组本身方法
let arr1 = [...odiv]  //扩展运算符

查找:

indexOf(ele)//查找元素ele 找到返回相对应的索引值。找不到返回-1,(查找不到NaN,因为NaN自己不等于自己。)

find(fn)//模糊查找,找到返回函数中对应的结果。

findIndex(fn)  //精确查找。找到返回索引值。找不到返回-1

let arr = [1, 2, 3, NaN]
console.log(arr.indexOf(NaN)) //返回-1
console.log(arr.find(x => Object.is(x, NaN))) //有值返回对应的查找值
console.log(arr.findIndex(x => Object.is(x, NaN))) //有值,返回对应的索引

fill(value, start=0, end=length)  //作用,从数组的start位开始,到end结束。这其中的元素全部替换成value(只传value。默认从初始位置开始到结束位子,什么都不传,整个数组就会变成undefined)。一般做数组的初始化 。

深入学习:https://github.com/chanceLe/ES6-Basic-Syntax/blob/master/%5Bes6%5D-03-%E6%95%B0%E7%BB%84.html

 

<think>我们正在讨论的是JavaScript中字符串前添加加号(+)的操作。根据引用[5]可知,在字符串前面直接放置加号会将其转换为数值类型。但用户的需求是向字符串前面添加加号(作为字符串的一部分),而不是进行类型转换。 因此,我们需要将加号作为字符串的一部分添加到原字符串前面。这实际上就是字符串拼接,只不过是在原字符串前面拼接一个加号字符。 根据引用[1][3][4],我们可以使用多种方法实现字符串拼接,例如: 1. 使用加号(+)运算符:将加号(作为字符串)与原字符串连接。 2. 使用模板字符串:在模板字符串中包含加号字符串。 3. 使用数组的join方法:将加号字符串放入数组,然后用join连接。 注意:由于加号在JavaScript中是一个特殊字符(既是运算符又是字符串的一部分),因此我们需要将其作为字符串字面量来处理。 具体方法如下: 方法1:使用加号运算符 示例: ```javascript let originalString = "123"; let newString = "+" + originalString; // 在前面添加加号 console.log(newString); // 输出: "+123" ``` 方法2:使用模板字符串ES6) 示例: ```javascript let originalString = "123"; let newString = `+${originalString}`; console.log(newString); // 输出: "+123" ``` 方法3:使用数组的join方法 示例: ```javascript let originalString = "123"; let newString = ['+', originalString].join(''); // 注意这里用空字符串连接 console.log(newString); // 输出: "+123" ``` 但是,如果用户想要在已有的字符串变量前面添加一个加号,并修改原变量,可以直接使用赋值操作,例如: ```javascript let str = "123"; str = "+" + str; // 现在str变成了"+123" ``` 另外,需要注意的是,如果原字符串已经以加号开头,那么再添加一个加号就会有两个加号。因此,在实际应用中,可能需要根据业务逻辑判断是否需要添加。 总结:在JavaScript中,向字符串前面添加加号(作为字符串的一部分)可以通过字符串拼接操作实现,常用的方法有加号运算符、模板字符串数组的join方法。 根据引用[1][3][4]的内容,这些方法都是可行的,选择哪种方法取决于个人偏好具体场景。 下面,我们按照要求生成相关问题。</think>在 JavaScript 中向字符串前面添加加号(`+`)作为字符内容,有以下几种实现方法: ### 1. **直接拼接法**(推荐) 使用 `+` 运算符将加号字符与原字符串拼接: ```javascript const originalStr = "123"; const newStr = "+" + originalStr; // 在字符串前添加加号 console.log(newStr); // 输出: "+123" ``` *优点*:语法简洁直观,性能高效[^1][^3] ### 2. **模板字符串法**(ES6) 使用反引号模板语法插入加号: ```javascript const originalStr = "ABC"; const newStr = `+${originalStr}`; // 使用模板字符串 console.log(newStr); // 输出: "+ABC" ``` *优点*:支持表达式嵌入,代码可读性强[^1][^4] ### 3. **数组拼接法** 通过数组的 `join()` 方法实现: ```javascript const originalStr = "text"; const newStr = ["+", originalStr].join(""); console.log(newStr); // 输出: "+text" ``` *适用场景*:需要动态添加多个前缀时[^4] ### ⚠️ 重要区别 ```javascript // 添加加号作为字符串内容(正确) console.log(+"123" + "abc"); // 输出: "+123abc" // 类型转换操作(错误方案) const num = +"123"; // 将字符串转为数字类型 console.log(typeof num); // 输出: "number" ``` *注意*:直接使用 `+"字符串"` 会触发类型转换(如引用[5]所示),而非添加字符[^5] --- ### 最佳实践建议 1. **简单场景**:优先使用 `+` 运算符直接拼接(方法1) 2. **复杂拼接**:使用模板字符串(方法2)保持代码可读性 3. **批量处理**:采用数组 `join()` 方法(方法3)提升性能 4. **避免混淆**:不要省略加号的引号(`"+"`),防止意外类型转换 > 当需要添加多个符号前缀时,可结合扩展运算符: > ```javascript > const symbols = ["+", "!", "#"]; > const result = [...symbols, "Hello"].join(""); > console.log(result); // 输出: "+!#Hello" [^4] > ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值