ES6技巧(持续更新)

1 打乱数组顺序

let arr = [60, true, false, '55']
arr = arr.sort(() => .5 - Math.random());
console.log(arr);
// [ 60, '55', true, false ]

2 去除数字之外的所有字符

const str = 'xiety 23241 is 12312 so 123'
const numbers = str.replace(/\D/g, '');
console.log(numbers);
// 2324112312123

3 反转字符串或者单词

function reverseBySeparator(str, separator) {
    return str.split(separator).reverse().join(separator);
}
const sentences = 'my name is qiaqiq'
const reverseSentence = reverseBySeparator(sentences, '');
// console.log(reverseSentence);
/// qiqaiq si eman ym

4 讲10进制转为二进制或者十六进制

const num = 43
const num1 = num.toString(2)
const num2 = num.toString(16)
// num1 101011
// num2 2b

5 合并多个对象

const person = {name: 'lala'}
const person1 = {nickName: 'qiaqia'}
const allperson = {...person, ...person1}
console.log(allperson)
// {name: 'lala', nickName: 'qiaqia'}

6 == 和 === 的区别

// == 类型转换 (浅比较)
// === 无类型转换 (严格比较)
0 == false // true
0 === false // false
1 == '1' // true
1 === '1' // false
null == undefined // true
null === undefined // false

7 判断回文字符串

回文字符串:正着写和反着写都一样的字符串

const isRevervse = (str1, str2) => {
	const normalize = (str) => {
		str.toLowerCase().normalize('NFD').split('').reverse().join('')
		return str
	}
	return normalize(str1) === str2
}
console.log(isRevervese('anagram', 'margana')) // true
console.log(isRevervese('rac', 'car') // true

8 可选操作符

可选操作符(?.)如果给定的函数不存在,则返回undefined

if (res && res.data && res.data.success) {
}
// 相当于
if (res?.data?.success) {
}

9 从数组中随机选择一个值

const elements = [24, 'qiaqia', 777, 'bangbang', 'full', false]
const random = arr => arr[Math.floor(Math.random() * arr.length)]
console.log(random(elements));
// 777

10 冻结对象

Object.freeze() 方法可以冻结一个对象。一个被冻结的对象再也不能被修改;冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,不能修改该对象已有属性的可枚举性、可配置性、可写性,以及不能修改已有属性的值。此外,冻结一个对象后该对象的原型也不能被修改。freeze() 返回和传入的参数相同的对象。
如果想修改已经被冻结的对象,不可能。只能先深拷贝一份,再做处理

var pizza = { 
    name: 'Peri Peri', 
    Topping: 'Prawn' 
}; 

Object.freeze(pizza); 
pizza.name = 'Hawaiian'; 
console.log(pizza); 
// { name: 'Peri Peri', Topping: 'Prawn' } 

pizza = JSON.parse(JSON.stringify(pizza)); // Clones the object 

pizza.name = 'Hawaiian'; 
console.log(pizza); 
// { name: 'Hawaiian', Topping: 'Prawn' } 

11 删除数组重复的对象

const list = [1, 2, 3,4,1,2,3,4]
const unique = arr => [...new Set(arr)]
console.log(unique) // [1,2,3,4]

12 清空数组

const numbers = [1,2,3,4,5]
numbers.length = 0
console.log(numbers) // []

13 从数组中获取最大值和最小值

const nums = [1,2,3,4,5,6 -3, 99 ,0 ,-1]
const max = Math.max(...nums)
const min = Math.min(...nums)
console.log(max) // 99
console.log(min) // -3

14 空值合并符??

MDN: 空值合并操作符(??)是一个逻辑操作符,当左侧的操作数为 null 或者 undefined 时,返回其右侧操作数,否则返回左侧操作数。

const nullval = null
const emptyString = ''
const someNum = 3

const a = nullval ?? 'a default' // a default
const b = emptyString ?? 'b default' // ''
const c = someNum ?? 'c default' // c

15 过滤数组中值为false

const nums = [1, 0, undefined, null, false]
const nums2 = nums.filter(Boolean) // [1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值