let arr = [1,2,2,3,3,4,5,6]
let newArr = [...new Set(arr)] // [1,2,3,4,5,6]
//或者 Array.from(new Set(arr))
複製代碼
'123' * 1 // 123
'china' * 1 // NaN
null * 1 // 0
undefined * 1 // NaN
複製代碼
+ '666' // 666
+ '' // 0
+ null // 0
+ 'china' // NaN
+ undefined // NaN
複製代碼
當 +
解釋爲鏈接操做符,而非加法操做符,可使用兩個 ~~
替換。對整數來講 ~~ 運算結果與 Math.floor( ) 運算結果相同(一個波浪號 ~
,被稱爲「按位取反運算符」,等價於 - n - 1。因此~15 = -16.)數組
let arr = [1,2,3,4,5]
console.log(arr.includes(1) == arr.indexOf(1)!=-1)//true
複製代碼
判斷字符串或數組中是否存在某個元素,使用includes代替indexOfbash
let url = new URLSearchParams(location.search.slice(1));
複製代碼
let location = 'http://www.baidu.com?id=2'
let _url = (new URL(location)).searchParams;
console.log(_url.get("id")) //2
複製代碼
var obj1 = { a : 1 };
var obj2 = { b : 2 };
var obj3 = { c : 3 };
console.log(Object.assign(obj1, obj2, obj3))//{ a : 1, b : 2, c:3 }
複製代碼
let obj1 = { a : 1, b : 2 };
let obj2 = { a : 2, c : 3, d : 4 };
let newObj = { ...obj1,...obj2 };
console.log(newObj) //{a: 2, b: 2, c: 3, d: 4}
複製代碼
var arr1 = [1, 2, [3, 4]];
arr1.flat();
// [1, 2, 3, 4]
var arr2 = [1, 2, [3, 4, [5, 6]]];
arr2.flat();
// [1, 2, 3, 4, [5, 6]]
var arr3 = [1, 2, [3, 4, [5, 6]]];
arr3.flat(2);
// [1, 2, 3, 4, 5, 6]
//使用 Infinity 做爲深度,展開任意深度的嵌套數組
arr3.flat(Infinity);
// [1, 2, 3, 4, 5, 6]
複製代碼
flat() 方法會移除數組中的空項:app
var arr4 = [1, 2, , 4, 5];
arr4.flat();
// [1, 2, 4, 5]
複製代碼
let arr = [ 1 , null , false , 2 , 3 , NaN , '' ]
console.log(a.filter(Boolean)) //[1,2,3]
複製代碼
對一個數字| 0能夠取整,負數也一樣適用,num | 0ui
1.3 | 0 // 1
-1.9 | 0 // -1
複製代碼
// 場景 1
function b(a) {
if (a) {
return a
} else {
return ''
}
}
// 場景 2
function b(a) {
return a || ''
}
複製代碼
上面是 || 的用法,也叫作短路處理。常見於 if 條件中,可是他其實也能夠直接用於語句中。當第一個參數爲 true 就會取第一個參數的值,當第一個參數不爲 true 就會取第二個參數的值。&& 正好與 || 相反。第一個參數 爲 true 會取第二個參數的值,常見用&&代替if-else,例如:url
if(a >=5){
 alert("你好");
}
//a >= 5 && alert("你好");
複製代碼
公共內容:
let a = 'VIP'
場景 1
if (a === 'VIP') {
return 1
} else if (a === 'SVIP') {
return 2
}
場景 2
switch(a) {
case 'VIP'
return 1
break
case 'SVIP'
return 2
break
}
場景 3
let obj = {
VIP: 1,
SVIP: 2
}
複製代碼
可用這種方法把狀態映射中文含義,例如支付狀態一般獲取的是 1, 2,3,4 這種值,可是列表要求顯示相應的中文狀態 未支付 | 支付中 | 已退款等等spa
// 過濾掉對象中 inner 和 outer 屬性
const { inner, outer, ...restProps } = {
inner: 'This is inner',
outer: 'This is outer',
v1: '1',
v2: '2',
v4: '3'
};
console.log(restProps);
// {v1: "1", v2: "2", v4: "3"}
複製代碼
let num = 123455678;
let num1 = 123455678.12345;
let formatNum = num.toLocaleString('en-US');
let formatNum1 = num1.toLocaleString('en-US');
console.log(formatNum); // 123,455,678
console.log(formatNum1); // 123,455,678.123
複製代碼