如果定义了一个函数,能够通过传入的不同参数进行不同的操作,那最好写成一个对象,通过不同的参数,去调用这个对象的对应方法,如下(不要使用switch哈
function doSth(type, a, b) {
return sthObj[type](a, b)
}
const sthObj = {
add(a, b) {
return a + b
},
sub(a, b) {
return a - b
}
}
const res = doSth('add', 1, 2)
console.log(res)
(1)
const obj1 = { name: 'yft', age: 20 }
const obj2 = { name: 'yft', age: 20 }
console.log(obj1 === obj2) //false 因为对象的地址肯定是不同的,所以为false
const res = Object.keys(obj1).every(i => obj1[i] === obj2[i])
console.log(res) //true
(2) 但是不适用于复杂类型
const obj1 = { name: 'yft', age: 20 }
const obj2 = { name: 'yft', age: 20 }
const res = JSON.stringify(obj1) === JSON.stringify(obj2)
console.log(res) //true
如下,函数类型会被排除在外,无法判断
const obj1 = { name: 'yft', age: 20, b: (a) => { return } }
const obj2 = { name: 'yft', age: 20, a: (a) => { return } }
const res = JSON.stringify(obj1) === JSON.stringify(obj2)
console.log(res) //true
const str = 'DataSource'
const res = str.replace(/([A-Z])/g, ($0, $1, index) => index === 0 ? $1.toLowerCase() : '-' + $1.toLowerCase())
// data-source
好好学一下replace的用法,十分强大
let res = '<h1>你好<111>我是内容</h1>'
.replace(/<([0-9a-z]+)>(.*)<\/\1>/gi, ($0, $1, $2) => $2);
// 其中的$2就是匹配到的标签内的内容