es6常遇问题

es6对数组去重有二种方法

  • 第一种: 利用Set对象和数组的Array.from方法
let add = [1,2,5,3,2,5,1]
Array.from(new Set(add))//[1, 2, 5, 3]
  • 第二种: 利用Set+扩展运算符 …
let add = [1,2,5,3,2,5,1]  
[...new Set(add)] //[1, 2, 5, 3]

es6中字符串、数字、数组、对象扩展的常用方法

  • 字符串
let s = 'Hello world!';
s.includes(llo,n):返回布尔值,表示是否找到了参数字符串(第二个参数是代表从那一个开始找)。
s.startsWith(wo,n):返回布尔值,表示参数字符串是否在原字符串的头部(第二个参数是代表从那一个开始找)。
s.endsWith(llo,n):返回布尔值,表示参数字符串是否在原字符串的尾部(第二个参数代表请n个字符)。
'abc'.repeat(2)方法返回一个新字符串,表示将原字符串重复n次//'abcabc'
'a'.padStart(8,'12')用于头部补全//'1212121a'
'b'.padEnd(8,'12') 用于尾部补全//'b1212121'
trim() 用于去掉前后空格trimStart()用于去掉字符串前面的空格trimEnd()用于去电字符串后面的空格
const s = '  abc  ';s.trim() // "abc"s.trimStart() // "abc  "s.trimEnd() // "  abc"
  • 数字
Number.isNaN()用来检查一个值是否为NaN
ES6 将全局方法parseInt()和parseFloat(),移植到Number对象上面,行为完全保持不变
// ES5的写法                                     // ES6的写法
parseInt('12.34') // 12                       Number.parseInt('12.34') // 12
parseFloat('123.45#') // 123.45       Number.parseFloat('123.45#') // 123.45
Number.isInteger()用来判断一个数值是否为整数。
Math.trunc(4.1) // 4 方法用于去除一个数的小数部分,返回整数部分。
Math.sign()方法用来判断一个数到底是正数、负数、还是零。对于非数值,会先将其转换为数值。
  • 数组
Array.from方法用于将两类对象转为真正的数组
let arrayLike = {
    '0': 'a',
    '1': 'b',
    '2': 'c',
    length: 3
};
// ES5的写法                                                              // ES6的写法
var arr1 = [].slice.call(arrayLike); // ['a', 'b', 'c']           let arr2 = Array.from(arrayLike); // ['a', 'b', 'c']
Array.of()方法用于将一组值,转换为数组。 Array.of(3, 11, 8) // [3,11,8]
find()   数组实例的find方法,用于找出第一个符合条件的数组成员 
[1, 4, -5, 10].find((n) => n < 0)   // -5
findIndex()  数组实例的findIndex方法的用法与find方法非常类似,返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1。
[1, 5, 10, 15].findIndex(function(value, index, arr) {
  return value > 9;
}) // 2
fill()方法使用给定值,填充一个数组。['a', 'b', 'c'].fill(7)  // [7, 7, 7]
entries(),keys() 和 values() 
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"
 includes() // Array.prototype.includes方法返回一个布尔值,表示某个数组是否包含给定的值
 flat()用于将嵌套的数组“拉平”,变成一维的数组 [1, 2, [3, 4]].flat()  // [1, 2, 3, 4]
 latMap()方法对原数组的每个成员执行一个函数
  • 对象
Object.is()它用来比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致。
+0 === -0 //true
NaN === NaN // false

Object.is(+0, -0) // false
Object.is(NaN, NaN) // true
Object.assign()方法实行的是浅拷贝,而不是深拷贝
Object.entries()方法返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键值对数组。
const obj = { foo: 'bar', baz: 42 };
Object.entries(obj)
// [ ["foo", "bar"], ["baz", 42] ]
Object.fromEntries()方法是Object.entries()的逆操作,用于将一个键值对数组转为对象
  • Set 和 Map 数据结构
ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。
ES6 提供了 Map 数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object 结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。如果你需要“键值对”的数据结构,Map 比 Object 更合适。
  • Promise
Promise.prototype.then()
Promise.prototype.catch()
Promise.prototype.finally()方法用于指定不管 Promise 对象最后状态如何,都会执行的操作
Promise.all() 方法用于将多个 Promise 实例,包装成一个新的 Promise 实例(都成功就调,要么就是有一个失败就会忘下面走)
Promise.race()方法同样是将多个 Promise 实例,包装成一个新的 Promise 实例(只要有一个状态改变,就会调回调函数)
Promise.allSettled()
Promise.any()该方法接受一组 Promise 实例作为参数,包装成一个新的 Promise 实例返回(只要参数实例有一个变成fulfilled状态,包装实例就会变成fulfilled状态;如果所有参数实例都变成rejected状态,包装实例就会变成rejected状态)
Promise.resolve()有时需要将现有对象转为 Promise 对象,Promise.resolve()方法就起到这个作用
Promise.reject()
应用
Promise.try()
  • JS中实现深拷贝的几种方法

使用递归的方式实现深拷贝
通过JSON对象实现深拷贝 ( 无法实现对象中方法的深拷贝)
通过Object.assign()拷贝( 无法实现对象中方法的深拷贝)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值