ES6之字符串,数组扩展

这篇博客详细介绍了ES6中字符串和数组的扩展,包括字符串的`includes`、`startsWith`、`endsWith`、`repeat`和`padStart/padEnd`方法,以及模板字符串的使用。在数组部分,讲解了`Array.of()`、`Array.from()`、`copyWithin`、`fill`、`filter`、`find/findIndex`、`reduce`、`keys/entries/values`和`map`的方法,同时提到了数组空位的处理。
摘要由CSDN通过智能技术生成

字符串的扩展

includes

判断字符串中有没有指定字符串,返回布尔值

includes(’‘指定字符’’,开始查找的位置(可选))

   let str = "asdgf426";
   console.log(str.includes('dg'));//true
   console.log(str.includes('sd',3));//false
startsWith

判断字符串是不是以指定字符作为开头

   let str = 'http://hao123.com';
        if(str.startsWith('http://')){
            alert('普通网址');
        }else if(str.startsWith('https://'){
            alert('加密网址');
        }else if(str.startsWith('git://'){
            alert('git地址');
        }else if(str.startsWith('svn://'){
            alert('svn地址');
        }else{
            alert('其他');
        }
endsWith

判断字符串是不是以指定字符作为结尾

    let str = '.txt';
    if(str.endsWith('.txt')){
        alert('文本文件');
    }else if(str.endsWith('.jpg')){
        alert('图片');
    }else{
        alert('其他');
    }
repeat

repeat方法返回一个新字符串,表示将原字符串重复n次。
repeat(num);
num:取整,不能是负数或者Infinity
如果repeat的参数是字符串,则会先转换成数字
但是,如果参数是 0 到-1 之间的小数,则等同于 0,这是因为会先进行取整运算。0 到-1 之间的小数,取整以后等于-0,repeat视同为 0。

   'x'.repeat(3) // "xxx"
   'hello'.repeat(2) // "hellohello"
   'na'.repeat(0) // ""
   'na'.repeat(-1)// RangeError
   'na'.repeat(-0.9) // "",不报错
padStart,padEnd(ES7中)

按照指定字符串补全字符串的指定长度
参数:1长度,2指定字符
如果省略第二个参数,默认使用空格补全长度。
padStart(length,“指定字符”)
padEnd(length,“指定字符”)

    let str = "addf";
    str.padStart(6,"e");//eeaddf
    'x'.padEnd(5, 'ab') // 'xabab'
    'abc'.padStart(10, '0123456789')// '0123456abc'
    'x'.padStart(4) // '   x'
    'x'.padEnd(4) // 'x   '

模板字符串(``)

添加变量用 ${}

        let a = 12;
        let str = `a${a}bc`;//反单引号
        console.log(str);//a12bc

        let title = '标题';
        let content = '内容';
        let str = '<div>\
            <h1>'+title+'</h1?\
            <p>'+content+'</p>\
            </div>';//普通方法
        let str2 = `<div>
        <h1>${title}</h1>
        <p>${content}</p>
        </div>`;//模板字符串
        

数组的扩展

Array.of()

Array.of 方法用于将一组值,转换为数组。
Array.of基本上可以用来替代Array()或new Array(),并且不存在由于参数不同而导致的重载。它的行为非常统一。

Array.of总是返回参数值组成的数组。如果没有参数,就返回一个空数组。

   Array.of(3, 11, 8) // [3,11,8]
   Array.of(3) // [3]
   Array(3) // [, , ,]
   Array.of() // []
   Array.of(undefined) // [undefined]
Array.from()

Array.from方法用于将两类对象转为真正的数组。类似数组的对象和可遍历的对象。

let arrayLike = {
    '0': 'a',
    '1': 'b',
    '2': 'c',
    length: 3
};
let arr2 = Array.from(arrayLike); // ['a', 'b', 'c']
copeWithin

在当前数组内部,将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组。改变原数组,但是原数组的长度不变。

Array.prototype.copyWithin(target, start = 0, end = this.length)

  • target(必需):从该位置开始替换数据。如果为负值,表示倒数。
  • start(可选):从该位置开始读取数据,默认为 0。如果为负值,表示从末尾开始计算。
  • end(可选):到该位置前停止读取数据之前,默认等于数组长度。如果为负值,表示从末尾开始计算。
     // 将3号位复制到0号位
   [1, 2, 3, 4, 5].copyWithin(0, 3, 4);// [4, 2, 3, 4, 5]
    // -2相当于3号位,-1相当于4号位
   [1, 2, 3, 4, 5].copyWithin(0, -2, -1);// [4, 2, 3, 4, 5]
   let arr = [1,2,3,4,5,6,7,8];
   arr.copyWithin(3,1,3);//1,2,3,2,3,6,7,8
fill

按照指定字符,填充数组。将数组的每一项都变成指定字符
fill方法还可以接受第二个和第三个参数,用于指定填充的起始位置和结束位置之前。

   let arr = [1,2,3,4,5,6];
   arr.fill("f");//["f","f","f","f","f","f"]
   ['a', 'b', 'c'].fill(7, 1, 2);// ['a', 7, 'c']

注意,如果填充的类型为对象,那么被赋值的是同一个内存地址的对象,而不是深拷贝对象。

   let arr = new Array(3).fill({name: "Mike"});
   arr[0].name = "Ben";
   console.log(arr);// [{name: "Ben"}, {name: "Ben"}, {name: "Ben"}]
filter

过滤器,根据返回值过滤原数组

        let arr3 = ["zhu",1,2,3,"zhu"];
        let arr1 = arr3.filter(function(item,index){
            return typeof item === "number";
        });
        console.log(arr1);//[1,2,3]
find和findIndex

find:用于找出第一个符合条件的数组成员。先遍历数组,参数函数返回true,停止查找,返回当前项.如果没有符合条件的成员,则返回undefined

    let arr3 = ["zhu",1,2,3,"zhu"];
    let arr1 = arr3.find(function(item){
           return typeof item === "number";
     });
     console.log(arr1);//1

findIndex:返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1。

    let arr3 = ["zhu",1,2,3,"zhu"];
    let i = arr3.findIndex(function(item){
           return typeof item === "string";
     });
     console.log(i);//0
includes

方法返回一个布尔值,表示某个数组是否包含给定的值,
该方法的第二个参数表示搜索的起始位置,默认为0。如果第二个参数为负数,则表示倒数的位置,如果这时它大于数组长度(比如第二个参数为-4,但数组长度为3),则会重置为从0开始。

    [1, 2, 3].includes(4)     // false
    [1, 2, NaN].includes(NaN) // true
    [1, 2, 3].includes(3, 3);  // false
    [1, 2, 3].includes(3, -1); // true
reduce

汇总,求数组的和

    let arr = [12,54,26,258];
    let result = arr.reduce(function(tmp,item,index){//中间结果(12,66,92,350),(54,26,258),下标
        if(index!=arr.length-1){
            return tmp+item;
        }else{
            return (tmp+item)/arr.length;
        }
    });
    alert(result);
keys和entries和values

用于遍历数组,可以用for…of循环进行遍历,
唯一的区别是keys()是对键名的遍历、values()是对键值的遍历,entries()是对键值对的遍历。

  for (let index of ['a', 'b'].keys()) {
    console.log(index);
  }
  // 0
  // 1

  for (let elem of ['a', 'b'].values()) {
    console.log(elem);
  }
  // 'a'
  // 'b'

  for (let [index, elem] of ['a', 'b'].entries()) {
    console.log(index, elem);
  }
  // 0 "a"
  // 1 "b"
map
function myfun_1(arr){
 var array = [];
  arr.map( item => {
    array.push(item*item);
  });
  console.log(array);
}
function myfun_2(arr){
 var array = [];
  arr.map( function(item){
  array.push(item*item);
 });
  console.log(array);
}

var arr3 = [1,2,3,4,5];
myfun_1(arr3);    //[1,4,9,16,25]
var arr1 = [5,2,1,3,4];
myfun_1(arr1);  //[25,4,1,9,16]
var arr2 = [3,4,5,1,2,6];
myfun_2(arr2);  //[9,16,25,1,4,36]

forEach,map,filter都在对象内接收一个函数,这个函数都可以接收三个参数,
第一个表示为每次遍历出的元素(item)
第二个表示遍历时的索引(index)
第三表示当前正在遍历的数组(arr)

空位

数组的空位:数组的某个索引位置没有任何值,undefined不是空位
判断一个数组中某一位置是不是空位用 in

   Array(3);//3个空位的数组
   let arr = [,,,,,];//五个空位
   0 in [undefined, undefined, undefined] // true
   0 in [, , ,] // false,3个空位
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值