6-ES5和String

ES5扩展内容

严格模式

  1. 启动严格模式:使用’use strict’
  2. 要求:必须放在作用域的开头部分。
  3. 严格模式的影响
  • 必须使用关键字声明变量
  • 函数中的形参名不允许重复
  • 函数中形参值的改变不再影响arguments中的值。
  • 取消了arguments中的callee方法
  • 取消了解析对象的with方法
  • 取消了八进制
  • 新增了关键字eval 和 arguments
  1. 好处:使语法更加规范,减少编程中的错误。

数组新增方法

  1. indexOf(元素,start) : 查找元素在数组中第一次出现的下标位置,如果没有找到,则返回 -1. 第二个参数决定了从哪个下标开始向后查找。
var arr = [1,2,3,2,4,2,5];
console.log(arr.indexOf(2));  //1
console.log(arr.indexOf(2,2)); //3
console.log(arr.indexOf(8));  //-1
  1. lastIndexOf(元素,start) : 查找元素在数组中从后向前找第一次出现的下标位置,如果没有找到,则返回-1;第二个参数决定了从哪个下标开始向前查找。
var arr = [1,2,3,2,4,2,5];
console.log(arr.lastIndexOf(2));  //5
console.log(arr.lastIndexOf(2,1)); //1
console.log(arr.lastIndexOf(8));  //-1
  1. forEach(function(value,index,array){}) //遍历数组
var arr = [1,2,3,4,5];
arr.forEach(function(value,index,array){
    console.log('下标:' + index,'元素:' + value,array);
})
  1. map(function(value,index,array){return …}) 映射、遍历数组,返回处理后的数组
var arr = [1,2,3,4,5];
var list = arr.map(function(value,index,array){
    return value + 2;
})
console.log(arr,list);
  1. some(function(value,index,array){return …}) : 遍历数组中每一个元素进行判断条件,如果有一个元素条件为true,则发生短路,退出循环,返回true。如果所有的元素条件都是false,那么最后返回false.
var arr = [90,99,88,97,100];
//如果数组中的元素有一个符合,则返回true,且停止循环
var bool = arr.some(function(value){
    console.log(value);
    return value < 90;
})
console.log(bool); //true
  1. every(function(value,index,array){return …}) : 遍历数组中每一个元素进行判断条件,如果有一个元素条件为false,则发生短路,退出循环,返回false. 如果所有的元素条件都是true,那么最后返回true
var arr = [90,99,88,97,100];
var bool = arr.every(function(value){
    console.log(value);
    return value >= 90;
})
console.log(bool); //false
  1. filter(function(value,index,array){return …}) : 过滤功能,则符合条件的元素返回来,返回的是一个数组。
var arr = [90,99,88,97,100];
var list = arr.filter(function(value){
    return value < 90;
})
console.log(list); //[88]
  1. reduce(function(prev,next,index,array){return …}) : 归并
/*
1.  如果reduce没有设置第二个参数时:prev 的是初值是数组中第一个元素。从第二次循环开始,prev中放置的是归并后的结果。
next 永远取的是下一个数组元素。
2. 如果reduce设置了第二个参数时: prev 的是初值是第二个参数。从第二次循环开始,prev中放置的是归并后的结果。
next 永远取的是下一个数组元素。
*/

var arr =[12345]
var sum = arr.reduce(function(prev,next){
    console.log(prev,next);
    return prev + next;
},0)
console.log(sum); //15

String内置对象

如何创建String对象

  1. 字面量方式: ‘’ “”
  2. 构造函数方式: new String()

属性

  1. length : 表示字符串的长度。

方法(查、替、截、转) (字符串中的方法都不会改变原串)

  1. indexOf(‘字符串’,start) 查找子串在父串中第一次出现的下标位置,如果没有找到,则返回 -1. 第二个参数决定了从哪个下标开始向后查找。
var str = 'how do you do';
console.log(str.indexOf('do')); //4
console.log(str.indexOf('do',5));  //11
console.log(str.indexOf('de')); // -1
  1. lastIndexOf(‘字符串’,start) 查找子串在父串中从后向前找第一次出现的下标位置,如果没有找到,则返回-1;第二个参数决定了从哪个下标开始向前查找。
var str = 'how do you do';
console.log(str.lastIndexOf('do')); //11
console.log(str.lastIndexOf('do',5));  //4
console.log(str.lastIndexOf('de')); // -1
  1. charAt(index) : index-下标 查找指定下标位置的字符是什么。
var str = 'how do you do';
console.log(str.charAt(4)); //'d'
//遍历字符串
for(var i = 0,len = str.length;i < len;i ++){
    console.log(str.charAt(i));
}
  1. charCodeAt(index) : 查找指定下标位置的字符编码是什么?

  1. replace(旧串,新串) :替换字符串
var str = 'how do you do';
console.log(str.replace('do','de')); //'how de you do'

//如何替换全部?
while(str.indexOf('do') !== -1){
    str = str.replace('do','de');
}
console.log(str);

截 : 截取部分字符串

  1. substring(start,end)

支持参数互换的,总是从小的下标截取到大的下标

  1. substr(start,length)

截取指定长度的字符串

  1. slice(start,end)

支持参数为负数

var str = 'how do you do';
console.log(str.substring(4,6)); //'do'
console.log(str.substr(4,6)); //'do you';
console.log(str.slice(4,6)); //'do'

console.log(str.substring(6,4)); //'do'
console.log(str.slice(6,4));  //''

console.log(str.substring(-6,-4));  //''
console.log(str.slice(-6,-4));  //'yo'

  1. toUpperCase() : 将小写字母转为大写字母
  2. toLowerCase() : 将大写字母转为小写字母
  3. split(‘切割符’,length) : 将字符串转为数组
var str = 'How Are You?';
console.log(str.toUpperCase()); //'HOW ARE YOU'
console.log(str.toLowerCase()); //'how are you'

console.log(str.split(' ')); // ['How','Are','You']
console.log(str.split(' ',20)); //['How','Are','You']

静态方法

  1. String.fromCharCode(编码) : 根据编码返回字符
var str = '千锋教育';
for(var i = 0,len = str.length;i < len;i ++){
    console.log(String.fromCharCode(str.charCodeAt(i) + 1));
}

字符集的故事

GB2312 简体中文
GB18030 简体中文
GBK 简体中文
ISO unicode编码 utf-8 utf-16 utf-32
中文: 0x4e00 ~ 0x9fa5
19968 ~ 40869 == 20902 回文数字

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
问题: 我在使用IDEA时遇到了一些问题,比如"Cannot resolve symbol"、"Command line is too long"、"Illegal character"等等。请问有什么解决方法吗? 回答: 针对你提到的问题,有一些解决方法可以尝试。首先,对于"Cannot resolve symbol"的问题,可以尝试重启IDEA,有时候这样就可以解决问题。\[2\]对于"Command line is too long"的问题,可以尝试缩短代码生成器或应用程序默认配置的命令行。可以通过修改项目所在目录下的.idea\workspace.xml文件来解决。找到标签<component name="PropertiesComponent">,在标签里加一行表示动态路径<property name="dynamic.classpath" value="true" />。\[3\]至于"Illegal character"的问题,可能是因为代码中出现了非法字符。可以检查代码中的特殊字符或者尝试重新编码文件来解决这个问题。\[2\]希望这些方法能够帮助你解决问题。 #### 引用[.reference_title] - *1* [svn提交代码中断 报错: svn: Working copy '' locked.](https://blog.csdn.net/weixin_39297312/article/details/80353991)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [IntelliJ IDEA 错误备忘录](https://blog.csdn.net/wb1046329430/article/details/104519296)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值