0.filter去重
数组的filter方法有三个参数,比如说数组 arr=[0,1,2,2,3]
- 第一个代表数组中的元素,代表的就是0、1、2、2、3
- 第二个代表索引值,比如0的索引是0,1是1,2是2,2是3,3是4
- 第三个值代表数组本身,也就是arr
去重:
let arr = [0,1,2,2,3]
let arr2 = arr.filter((x,index,self) => {
return self.indexOf(x) === index
})
理解:
indexOf方法会返回数组中第一次出现x的索引值。所以,会发生这样的事:
第一次x = 0, index = 0, indexOf(x) = 0
第二次x = 1, index = 1, indexOf(x) = 1
第三次x = 2, index = 2, indexOf(x) = 2
第四次x = 2, index = 3, indexOf(x) = 2 (不符合filter规则,去除,因为indexOf总是返回数组中第一次出现x的索引值)
1.双叹号强制转换为布尔类型
一个叹号转换为布尔值的取反值,再来一个叹号回到该变量真实的布尔值,如下
// 强制转换为Boolean 用 !!
var bool = !!"c";
console.log(typeof bool); // boolean
// 强制转换为Number 用 +
var num = +"1234";
console.log(typeof num); // number
// 强制转换为String 用 ""+
var str = ""+ 1234;
console.log(typeof str); // string