首页 > 其他分享 >高阶函数处理字符串方法

高阶函数处理字符串方法

时间:2023-06-01 14:45:11浏览次数:40  
标签:console 函数 let 字符串 stringValue message 高阶 log

1、concat()用于将一个或多个字符串拼接成一个新字符串。来看下面的例子:

let stringValue = "hello "; 
let result = stringValue.concat("world"); 
//可接收任意多个参数
let res = stringValue.concat("world","!!");
 
console.log(result);      // "hello world" 
console.log(stringValue); // "hello"
console.log(res); // "hello world !!"

2、3个从字符串中提取子字符串的方法slice('ks','js') 、 substr() 和 substring()

都接收两个参数一开始位置二结束位置
slice() 和 substring()第二个参数是提取结束的位置(即该位置之前的字符会被提取出来)
substr() 第二个参数表示返回的字符数

let stringValue = "hello world"; 
console.log(stringValue.slice(3));       // "lo world" 
console.log(stringValue.substring(3));   // "lo world" 
console.log(stringValue.substr(3));      // "lo world" 
console.log(stringValue.slice(3, 7));    // "lo w" 
console.log(stringValue.substring(3,7)); // "lo w" 
console.log(stringValue.substr(3, 7));   // "lo worl"

3、字符串位置方法indexOf() 和lastIndexOf() 没有找到返回 -1,有就返回最后检索到的位置

lastIndexOf() 在面对字符串是中文的时候会失效

let stringValue = "hello world"; 
console.log(stringValue.indexOf("o", 6));     // 7 
console.log(stringValue.lastIndexOf("o", 6)); // 4
//indexOf() 返回 7 ,因为它从位置6(字符 "w" )开始向后搜索字符串,在位置7找到了 "o" 。而 lastIndexOf() 返回 4 ,因为它从位置6开始反向搜索至字符串开头,因此找到了 "hello" 中的 "o" 


let stringValue = "Lorem ipsum dolor sit amet, 
consectetur adipisicing elit"; 
let positions = new Array(); 
let pos = stringValue.indexOf("e"); 
 
while(pos > -1) { 
  positions.push(pos); 
  //检索位置为上一个再加1
  pos = stringValue.indexOf("e", pos + 1); 
} 
 
console.log(positions); // [3,24,32,35,52]

4、字符串包含方法

startsWith() 、 endsWith() 和 includes()
这些方法都会从字符串中搜索传入的字符串,并返回一个表示是否包含的布尔值。

区别:startsWith() 检查开始于索引0的匹配项
endsWith() 检查开始于索引 (string.length - substring.length) 的匹配项
includes() 检查整个字符串

let message = "foobarbaz"; 
 
console.log(message.startsWith("foo"));  // true 
console.log(message.startsWith("bar"));  // false 
 
console.log(message.endsWith("baz"));    // true 
console.log(message.endsWith("bar"));    // false 
 
console.log(message.includes("bar"));    // true 
console.log(message.includes("qux"));    // false

startsWith() 和 includes()方法接收可选的第二个参数,表示
开始搜索的位置。如果传入第二个参数,则意味着这两个方法会从指定
位置向着字符串末尾搜索,忽略该位置之前的所有字符。下面是一个例
子:

let message = "foobarbaz"; 
 
console.log(message.startsWith("foo"));     // true 
console.log(message.startsWith("foo", 1));  // false 
 
console.log(message.includes("bar"));       // true 
console.log(message.includes("bar", 4));    // false

endsWith() 方法接收可选的第二个参数,表示应该当作字符串末尾
的位置。如果不提供这个参数,那么默认就是字符串长度。如果提供这
个参数,那么就好像字符串只有那么多字符一样:

let message = "foobarbaz"; 
 
console.log(message.endsWith("bar"));     // false 
console.log(message.endsWith("bar", 6));  // true

5、trim() 方法:删除字符串前后所有空格
另外, trimeLeft() 和 trimRight() 方法分别用于从字符串开始和末尾清理空格符。

let stringValue = " hello world "
let trimStringValue = stringValue.trim();
console.log(stringValue) // " hello world "
console.log(trimStringValue) // "hello world"

6、Math:Math 对象作为保存数学公式、信息和计算的地方。 Math 对象提供了一些辅助计算的属性和方法

属性 说明
Math.E 自然对数的基数e的值
Math.LN10 10为底的自然对数
Math.LN2 2为底的自然对数
Math.LOG2E 以2为底e的对数
Math.LOG10E 以10为底e的对数
Math.PI π的值
Math.SQRT1_2 1/2的平方根
Math.SQRT2 2的平方根

7、解决遍历对象时,把原型上的属性遍历出来了咋办?

使用hasOwnProperty判断
hasOwnProperty表示是否有自己的属性。这个方法会查找一个对象是否有某个属性,但是不会去查找它的原型链。

function Person(name) {
  this.name = name
}
Person.prototype.age = 23
const person = new Person('Sunshine_lin')
for (const key in person) { console.log(key) } // name age
// 使用 hasOwnProperty
for (const key in person) {
  person.hasOwnProperty(key) && console.log(key)
} // name

8、如何实现数组去重?

// 使用 Map 去重
function quchong1(arr) {
  const newArr = []
  arr.reduce((pre, next) => {
    if (!pre.get(next)) {
      pre.set(next, 1)
      newArr.push(next)
    }
    return pre
  }, new Map())
  return newArr
}

// 使用 Set 去重
function quchong (arr) {
    return [...new Set(arr)]
}

9、Set与Array的区别是什么?

Set使用has判断有无元素,数组使用索引
Set添加元素使用方法add,数组用push、unshift
Set长度为size,数组为length
Set会自动把同样的基础数据类型去重,数组不能
Set删除元素用delete,数组用splice、pop、shift
Set可以使用clear清空,数组需要重新赋值[]
数组可以传入new Set(array),实现数组转Set
Set可以使用keys、value方法,转数组
Set自带forEach方法进行遍历

标签:console,函数,let,字符串,stringValue,message,高阶,log
From: https://www.cnblogs.com/yx-liu/p/17448935.html

相关文章

  • Pandas中将字符串(object)格式的列,强制转换为浮点型的列
    importpandasaspddf=pd.DataFrame([['11.0',1,2,3],['22.0',4,5,6],['33.0',7,8,9]],columns=['a','b','c','d'])df['a']=pd.......
  • z函数|exkmp|拓展kmp 笔记+图解
    题外话,我找个什么时间把kmp也加一下图解z函数|exkmp别担心这个exkmp和kmp没毛点关系,请放心食用。本文下标以1开始,为什么?因为1开始就不需要进行长度和下标的转换,长度即下标。定义给出模板串S和子串T,长度分别为n和m,对于每个ans[i](1<=i<=n),求出S[i...n]与T的最长公共前缀长......
  • SQL改写案例6(开窗函数取中位数案例)
    周总找我问个报表SQL实现逻辑的案例,废话不说给他看看。 原SQL:SELECTd.tname姓名,d.spname岗位,d.sum_cnt报单单量,d.min_cnt放款单量,d.date月份FROM(SELECT*FROM(SELECTa.zts_name......
  • wireshark 查找 DNS 域名——编辑里查找 选择分组详情里去按照字符串搜索即可
    ......
  • Kotlin中的字符串模板
    字符串模板的使用在Kotlin中可以直接在字符串字面值中引用变量,例如:valname="william"valstr="mynameis${name}"println(str)并且Kotlin官方文档建议使用字符串模板来替代字符串连接符的使用,原因在于我们知道String类是immutable的,字符串连接符的实现原理是每次都......
  • java中函数式编程的一些测试
    目录Java中函数式编程的一些测试树反转数据处理科里化Optional函数组合全部代码Java中函数式编程的一些测试在上一篇文章中,提及了java中的函数式编程,但缺少了一些相关的代码,这里补充一下.注意,本文中的代码并不代表最佳实践,只是提供一种思路,其中有很多代码并没有实......
  • 规则引擎的低代码日记——自定义函数编程操作(类excel函数)
    它是技术源码可开放的JAVA规则引擎,采用springcloud+VUE的技术架构进行构建,其中对数据的灵活加工处理采用的是函数式编程的思路(类excel函数配置),是其亮点功能。它允许开发人员定义和管理应用程序的规则,并在应用程序中执行这些规则。在规则引擎中,从数据加工成变量并使用函数式编程......
  • Hive高级函数实战
    函数的基本操作和mysql一样的,hive也是一个主要做统计的工具,所以为了满足各种各样的统计需要,它也内置了相当多的函数showfunctions;#查看所有内置函数descfunctionfunctionName;#查看指定函数的描述信息descfunctionextendedfunctionName;#显示函数的扩展内容Hiv......
  • Java 一个函数返回两个以上的值
    正常函数只有一个返回值,但我们用数组来做为返回值,这样就可以实现一个函数返回多个值以计算时间差函数为例//获取时间间隔publicstaticString[]getTimeInterval(StringstrStartTime,StringstrStopTime){StringarrStr[]=newString[2];try{......
  • 最规范的汇编函数传参demo
    assumecs:code;记忆点:1.主函数,子函数都需要自己维护bp和sp(当然不维护也行,但是非常容易出bug,所以还是要强烈按照下面子函数头,子函数尾.主函数头尾这么写,最安全.)2.函数ip都有压栈出站自动维护但是自己要算明白栈的偏移量.codesegmentraddprocpus......