ES6 String、对象、数组新增

String

字串的识别

  • includes():返回布尔值,判断是否找到参数字符串。

  • startsWith():返回布尔值,判断参数字符串是否在原字符串的头部。

  • endsWith():返回布尔值,判断参数字符串是否在原字符串的尾部。

以上三个方法都可以接受两个参数,需要搜索的字符串,和可选的搜索起始位置索引
//includes
var str="hello,华清远见"
var re1=str.includes("华清")
var re2=str.includes(" ")
var re3=str.includes("")
console.log(re1,re2,re3)//true false true

//startsWith与endsWith
var str="6598257298502739"
var str2=str.startsWith("59",1)//第二个参数 从哪里第一位往后数,是开头
var str3=str.endsWith("2985",11)//第二个参数 从哪里最后一位往前数,是结尾
console.log(str2,str3)//true true
注意:
  • 如果需要返回子串的位置,还是要用indexOf和 lastIndexOf 。
  • 这三个方法如果传入了正则表达式而不是字符串,会抛出错误。而 indexOf 和 lastIndexOf 这两个方法,它们会将正则表达式转换为字符串并搜索它。

字符串重复

repeat():返回新的字符串,表示将字符串重复指定次数返回。
如果参数是小数,向下取整;
如果参数是 0 至 -1 之间的小数,会进行取整运算,0 至 -1 之间的小数取整得到 -0 ,等同于 repeat 零次;
如果参数是 NaN,等同于 repeat 零次;
如果参数是负数或者 Infinity ,会报错;
如果传入的参数是字符串,则会先将字符串转化为数字;
console.log("Hello,".repeat(2));  // "Hello,Hello,"
var str="花园花苑888"
var str="*".repeat(str.length)
console.log(str2)
		
//*******

字符串补全

  • padStart:返回新的字符串,表示用参数字符串从头部补全原字符串。

  • padEnd:返回新的字符串,表示用参数字符串从尾部补全原字符串。

以上两个方法接受两个参数,第一个参数是指定生成的字符串的最小长度,第二个参数是用来补全的字符串。如果没有指定第二个参数,默认用空格填充。
如果指定的长度小于或等于原字符串的长度,则返回原字符串。
如果原字符串加上补全字符串长度大于指定长度,则截去超出位数的补全字符串。
常用于补全位数。
console.log("h".padStart(5,"o"));  // "ooooh"
console.log("h".padEnd(5,"o"));    // "hoooo"
console.log("h".padStart(5));      // "    h"

//常用于补全位数
console.log("123".padStart(10,"0"));  // "0000000123"

模板字符串

模板字符串相当于加强版的字符串,用反引号 `,除了作为普通字符串,还可以用来定义多行字符串,还可以在字符串中加入变量和表达式。
字符串中可以调用函数。
function f(){
  return "I’m fun!";
}
let string2= `Hello,${f()}`;
console.log(string2);  // Hello,I’m fun!
注意:模板字符串中的换行和空格都是会被保留的。

对象

对象字面量

属性的简洁表示法:ES6允许对象的属性直接写变量,这时候属性名是变量名,属性值是变量值。
es6的对象成员可以写做 一个单词 这个单词是变量名:把变量名作为对象的属性名 值取出作为属性值(易于读取,提高开发效果)
var count=20
//var obj={count:count}//{"count":count}
var obj={count}
var {age}={age:20}
console.log(obj["count"])

const age = 12;
const name = "Amy";
const person = {age, name};
console.log(person); //{age: 12, name: "Amy"}
方法也可以简写。
属性名表达式:ES6允许用表达式作为属性名,但是一定要将表达式放在方括号内。
const person = {
  sayHi(){
    console.log("Hi");
  }
}
person.sayHi();  //"Hi"
var obj = {
    name: "karen",//常用写法
    "age":20,//标准写法,
    ["hello"+100]:90,//es6写法
    [false]:90,//es6写法
    [{life:100}]:90,//es6写法,
    [Symbol(100)]:200
}
console.log(obj)
注意点:属性的简洁表示法和属性名表达式不能同时使用,否则会报错。

对象的扩展运算符

拓展运算符(...)用于取出参数对象所有可遍历属性然后拷贝到当前对象。

  • 基本用法

let person = {name: "Lilly", age: 16};
let someone = { ...person };
console.log(someone);  //{name: "Lilly", age: 16}
  • 可用于合并两个对象
let age = {age: 16};
let name = {name: "Lilly"};
let person = {...age, ...name};
console.log(person);  //{age: 16, name: "Lilly"}

注意:自定义的属性和拓展运算符对象里面属性的相同的时候

  1. 自定义的属性在拓展运算符后面,则拓展运算符对象内部同名的属性将被覆盖掉。
  2. 自定义的属性在拓展运算度前面,则变成设置新对象默认属性值。
  3. 拓展运算符后面是空对象,没有任何效果也不会报错。
  4. 拓展运算符后面是null或者undefined,没有效果也不会报错。
    let b = {...null, ...undefined, a: 1, b: 2};
    console.log(b);  //{a: 1, b: 2}

对象的新静态方法

Object.is(value1, value2):用来比较两个值是否严格相等,与(===)基本类似。
注意:
与===的区别
//一是+0不等于-0
Object.is(+0,-0);  //false
+0 === -0  //true

//二是NaN等于本身
Object.is(NaN,NaN); //true
NaN === NaN  //false

数组

数组创建

Array.of():将参数中所有值作为元素形成数组。
console.log(Array.of(1, 2, 3, 4)); // [1, 2, 3, 4]
 
// 参数值可为不同类型
console.log(Array.of(1, '2', true)); // [1, '2', true]
 
// 参数为空时返回空数组
console.log(Array.of()); // []
Array.from():将类数组对象或可迭代对象转化为数组。
// 参数为数组,返回与原数组一样的数组
// 参数含空位
console.log(Array.from([1, , 3])); // [1, undefined, 3]

参数说明:Array.from(arrayLike[, mapFn[, thisArg]])

  • arrayLike:想要转换的类数组对象或可迭代对象。

  • mapFn:可选,map 函数,用于对每个元素进行处理,放入数组的是处理后的元素。
  • thisArg:可选,用于指定 map 函数执行时的 this 对象。
类数组对象:一个类数组对象必须含有 length 属性,且元素属性名必须是数值或者可转换为数值的字符。
let arr = Array.from({
  0: '1',
  1: 3,
  length: 2
});
console.log(); // ['1', 3]
 
// 没有 length 属性,则返回空数组
let array = Array.from({
  0: '1',
  1: 3,
});
console.log(array); // []
 
// 元素属性名不为数值且无法转换为数值,返回长度为 length 元素值为 undefined 的数组  
let array1 = Array.from({
  a: 1,
  b: 2,
  length: 2
});
console.log(array1); // [undefined, undefined]
转换可迭代对象
可转换map、可转换set
可转换字符串
let str = 'abc';
console.log(Array.from(str)); // ["a", "b", "c"]

扩展的方法

查找:

  • find():查找数组中符合条件的元素,若有多个符合条件的元素,则返回第一个元素。
    let arr = Array.of( 2, 3, 4, 5, 6);
    console.log(arr.find(item => item > 2)); // 3
     
    // 数组空位处理为 undefined
    console.log([, 1].find(n => true)); // undefined
  • findIndex():查找数组中符合条件的元素索引,若有多个符合条件的元素,则返回第一个元素索引。
var arr=[10,304,50]
var re=arr.findIndex(function(el){
    if(el>18){return true}
})
console.log(re)//1

填充:

  • fill():将一定范围索引的数组元素内容填充为单个指定的值。

var  arr=[10,203,4,100,3004,5]
var arr2=arr.fill("hello",2,4)//2 3

//参数1:用来填充的值
// 参数2:被填充的起始索引
// 参数3(可选):被填充的结束索引,默认为数组末尾
console.log(arr,arr2,arr==arr2)
//(6) [10, 203, 'hello', 'hello', 3004, 5] (6) [10, 203, 'hello', 'hello', 3004, 5] true

遍历:

  • entrys():遍历键值对。

  • keys():遍历键名。
  • values():遍历键值

包含:

  • includes():数组是否包含指定值。注意:与 Set 和 Map 的 has 方法区分;Set 的 has 方法用于查找值;Map 的 has 方法用于查找键名。返回值为布朗值。参数1:包含的指定值;参数2:可选,搜索的起始索引,默认为0;NaN 的包含判断为true。

嵌套数组转一维数组:

  • flat()

    console.log([1 ,[2, 3]].flat()); // [1, 2, 3]
     
    // 指定转换的嵌套层数
    console.log([1, [2, [3, [4, 5]]]].flat(2)); // [1, 2, 3, [4, 5]]
     
    // 不管潜逃多少层
    console.log([1, [2, [3, [4, 5]]]].flat(Infinity)); // [1, 2, 3, 4, 5]
     
    // 自动跳过空位
    console.log([1, [2, , 3]].flat());<p> // [1, 2, 3]

扩展运算符(...)

复制数组:
let arr = [1, 2],
    arr1 = [...arr];
console.log(arr1); // [1, 2]
 
// 数组含空位
let arr2 = [1, , 3],
    arr3 = [...arr2];
console.log(arr3); [1, undefined, 3]
合并数组:
var arr1=[1, 2];
var arr2=[3, 4];
console.log([...arr1,...arr2]); // [1, 2, 3, 4]
全部评论
原来还可以那样重复输出字符串
点赞 回复 分享
发布于 2022-08-09 21:48

相关推荐

不愿透露姓名的神秘牛友
07-21 13:38
8月实习会变多吗现在还没找到实习该怎么办...回复的hr好少
码农索隆:3-4月就要开始找,基本上6月份就发offer,7月初已经开始暑期实习了。
点赞 评论 收藏
分享
Twilight_m...:经典我朋友XXXX起手,这是那种经典的不知道目前行情搁那儿胡编乱造瞎指导的中年人,不用理这种**
点赞 评论 收藏
分享
一表renzha:不是你说是南通我都没往那方面想,人家真是想表达那个意思吗?
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务