美文网首页
6. 数组和字符串扩展

6. 数组和字符串扩展

作者: wudimingwo | 来源:发表于2018-12-07 10:05 被阅读0次

字符串回顾

  1. String.prototype.charAt(num);
            let str = 'abcdefghijklmn';
            console.log(str.charAt(3));/ d
            console.log(str.charAt(3) == str[3]);/true
  1. String.prototype.charCodeAt(num);// 返回该字符的unicode码
            console.log(str.charCodeAt(3));/100
  1. str.slice(start,end); [start,end) 左闭右开
            console.log(str.slice(3,5));/ de
  1. str.indexOf(txt,start=0);
    返回首次出现字符串的索引值, 没有则返回-1
            console.log(str.indexOf('de'));/3
            console.log(str.indexOf('de',3));/3
            console.log(str.indexOf('de',4));/-1
  1. split(),toUpperCase(),toLowerCase()

es6 新增

  1. str.includes(txt,start=0) 字串的识别
            console.log(str.includes('de'));/true
            console.log(str.includes('de',3));/true
            console.log(str.includes('de',4));/false
  1. str.startWith(txt,start=0)[闭区间]
    str.endWith(txt,end=length)(开区间)
            console.log(str.startsWith('ab'));/true
            console.log(str.startsWith('de',3));/true
            console.log(str.endsWith('mn'));/true
            console.log(str.endsWith('de',5));/true(不包含第5位)

应用 前缀匹配, 域名分类

8.str.repeat(num);

产生由10个* 组成的字符串
最普遍
let str = '';
for(let i = 0;i < 10; i++) {
  str += '*';
}
console.log(str);

用repeat 

let str = '*'.repeate(10);

console.log(str);

模板字符串

            function returnStr (a,b) {
                return `${a} * ${b} = ${a*b}`;
            }
            console.log(returnStr(5,2));/"5 * 2 = 10"
            

模板字符串的优点
更标准的字符串,更好的处理了字符串拼接的问题
语义化更好
防止注入XSS


标签模板 标签 => 函数

            alert('hello');/执行
            alert`hello1`;/ 执行
            alert'hello';/ 报错

试一下这个

            console.log`123`;

输出的是


image.png

看一下这个

            console.log(parseInt(`12${3}`));/ 123
            console.log(parseInt`12${3}`); /5
等价于 console.log(parseInt(['12',''],3)); /5


应该是先发生 ['12',''].toString() => '12,'
之后执行 parseInt('12,',3) => 5

看一下这个

            
            function print (arg1, arg2) {
                console.log(arguments);
                console.log(arg1,arg2);
            }
            
            print`12${3}4${5}6`;
image.png
            function print (listArr, ...arg) {
                console.log(listArr);
                console.log(arg);
            }
            let a = 10;
            let b = 5;
            
            print`${a} * ${b} = ${a*b}`;
image.png

有可能遇到攻击的情形

正常
            let name = 'mike';
            document.write(`<p>你好,${name}</p>`)
插入脚本标签
              let name = '<script>console.log("over")</script>';
              document.write(`<p>你好,${name}</p>`)

处理
            
              let name = '<script>console.log("over")</script'+'>';
              function safeHTML (arr, name) {
                return `${arr[0]}${name.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;')}${arr[1]}`
              }
              
              document.write(safeHTML`<p>你好,${name}</p>`)
                

数组的扩展

  1. Array.of() 增强版 new Array()
    统一返回由参数构成的数组
              console.log(Array.of(9));/[9]
              console.log(Array.of('9'));/['9']
              console.log(Array.of('9',1,2));['9',1,2]

2.Array.from() 将类数组转换为数组 arguments Nodelist

            let oDivList = document.getElementsByTagName("div");
                
            let realArr = Array.from(oDivList);

也可以用扩展运算符

            let realArr = [...oDivList];
  1. arr.find((item,index,self) => {})
    arr.findIndex((item,index,self) => {})
    遇到符合条件的马上停止
            let arr = [1,2,3,4,5,NaN];
             arr.find((x,y,z) => {
              return Object.is(x,NaN);/ NaN
            })
            arr.findIndex((x,y,z) => {
              return Object.is(x,NaN);/5
            })

如果没有
            let arr = [1,2,3,4,5];
             arr.find((x,y,z) => {
              return Object.is(x,NaN);/ undefined
            })
            arr.findIndex((x,y,z) => {
              return Object.is(x,NaN);/-1
            })



  1. arr.fill(value, start=0,end=length) 常用于初始化操作.
    生成二维数组
           let arr = new Array(10);
           arr.fill(0);
           let list = new Array(10);
           list.fill(arr);
           console.log(list);

-----------------------------------------------------
发现这样是不行的
           let arr = [];
           arr.fill(0,0,10);
           let list = [];
           list.fill(arr,0,10);
           console.log(list);

相关文章

  • ES6 语法总结

    1. let,const关键词 2. 结构赋值 3. 正则扩展 4. 字符串扩展 5. 数值扩展 6. 数组扩展 ...

  • 6. 数组和字符串扩展

    字符串回顾 String.prototype.charAt(num); String.prototype.char...

  • ES6扩展

    字符串扩展 正则扩展 数值扩展 函数扩展 对象扩展 数组扩展 字符串扩展 模版字符串 部分新的方法 padStar...

  • 字符串、数组、函数、对象

    字符串 多行字符串 字符串模板 数组 扩展 函数参数的扩展 类数组对象转数组 函数 默认值 以下两种写法的区别? ...

  • ES6 字符串、数组、函数、对象

    字符串 1. 多行字符串 2. 字符串模板 数组 1. 扩展 2. 函数参数的扩展 3. 类数组对象转数组 函数 ...

  • 十五、字符串转数字

    字符串转数组 字符串 *待扩展:传递与复制扩展 函数式编程和改变原始数据的编程方法

  • ES6扩展

    字符串的扩展正则的扩展数值的扩展数组的扩展函数的扩展对象的扩展

  • web-jianshu es6/es7新语法

    1.let和const 2.数组的解构 3.对象的解构 4.函数参数的解构 5.数组的扩展 6.对象的扩展 7.函...

  • ES6 学习笔记--------目录

    1.let 和 const 命令 2.变量的解构赋值 3.字符串的扩展 4.正则的扩展 5.数值的扩展 6.函数的...

  • es6入门

    一、解构赋值 数组的解构赋值 二、 对象解构赋值 三、正则新特性 四、字符串扩展 五、数值扩展 六、数组扩展 七、...

网友评论

      本文标题:6. 数组和字符串扩展

      本文链接:https://www.haomeiwen.com/subject/yqeacqtx.html