1. 獲取指定范圍內的隨機整數:
function getRandom(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
2. 打亂數組順序
let arr:[31,2,3,'排序','??']
arr = arr.sort(() => 0.5 - Math.random())
// [ 3, 2, "??", "排序", 31 ]
3. 用Math.max()取數組最大值
let arrr = [ 6, 1, 2, 8, 10 ]
// ES5 的寫法
let max = Math.max.apply(Math,arr)
Math.max.apply(null, arrr)
// ES6使用拓展運算符的寫法
Math.max(...arr)
// max = 10
// 等同于
Math.max(14, 3, 77);
3. 去除數字之外的所有字符
var str = ''yannnianjunzi这敬,溫其如玉热押,一個億斤贰,1000000000??"
let num = str.replace(/\D/g,'')
// num 1000000000
3.1 replaceAll方法
const str = "hello world";
// 之前
str.replace(/o/g, "a")// "hella warld"
// 現(xiàn)在
str.replaceAll("o", "a")// "hella warld"
4. 反轉字符串或者單詞
let str = 'dfvgwsdfgg枯芬,奮斗奮斗參考看看,dsfgf'
let reverseStr = str.split('').reverse().join('')
5. 將十進制轉換為二進制或十六進制
let num = 12;
let num1 = Number(this.num10).toString(2)
let num2 = Number(this.num10).toString(16)
6. 如何檢查對象中是否存在某個屬性
6.1 第一種使用 in 操作符號:
const o = {
"prop" : "bwahahah",
"prop2" : "hweasa"
};
console.log("prop" in o); // true
console.log("prop1" in o); // false
6.2 使用
hasOwnProperty
方法,hasOwnProperty()
方法會返回一個布爾值,指示對象自身屬性中是否具有指定的屬性(也就是,是否有指定的鍵)
6.2.1 Object.hasOwn()和Object.hasOwnProperty區(qū)別 JavaScript 對象的屬性分成兩種:自身的屬性和繼承的屬性旭寿。對象實例有一個
hasOwnProperty()
方法,可以判斷某個屬性是否為原生屬性崇败。ES2022 在Object
對象上面新增了一個靜態(tài)方法Object.hasOwn()
盅称,也可以判斷是否為自身的屬性。Object.hasOwn()
可以接受兩個參數后室,第一個是所要判斷的對象缩膝,第二個是屬性名。
const foo = Object.create({ a: 123 });
foo.b = 456;
Object.hasOwn(foo, 'a') // false
Object.hasOwn(foo, 'b') // true
上面示例中岸霹,對象foo的屬性a是繼承屬性疾层,屬性b是原生屬性。Object.hasOwn()對屬性a返回false贡避,對屬性b返回true痛黎。
Object.hasOwn()的一個好處是,對于不繼承Object.prototype的對象不會報錯刮吧,而hasOwnProperty()是會報錯的湖饱。
console.log(o.hasOwnProperty("prop2")); // true
console.log(o.hasOwnProperty("prop1")); // false
const obj = Object.create(null);
obj.hasOwnProperty('foo') // 報錯
Object.hasOwn(obj, 'foo') // false
// 上面示例中,Object.create(null)返回的對象obj是沒有原型的杀捻,不繼承任何屬性井厌,
// 這導致調用obj.hasOwnProperty()會報錯,但是Object.hasOwn()就能正確處理這種情況致讥。
6.3 第三種使用括號符號obj["prop"]仅仆。如果屬性存在,它將返回該屬性的值垢袱,否則將返回undefined墓拜。
console.log(o["prop"]); // "bwahahah"
console.log(o["prop1"]); // undefined
7.生成一個長度為100并且內容為0的數組
1. new Array(100).fill(0); Array(100).fill(0)
2. Array.from({length:100}, x => x=0)
3. Array.apply(null, {length:100} ).map(x => x=0)
Array.from()還可以接受一個函數作為第二個參數,作用類似于數組的map()方法请契,用來對每個元素進行處理咳榜,將處理后的值放入返回的數組潘懊。
Array.from(arrayLike, x => x * x);
// 等同于
Array.from(arrayLike).map(x => x * x);
Array.from([1, 2, 3], (x) => x * x)
// [1, 4, 9]
8. 通過toString來檢測各種數據類型
/**
* @description: 數據類型的檢測
* @param {any} data 要檢測數據類型的變量
* @return {string} type 返回具體的類型名稱【小寫】
*/
const isTypeOf = (data) => {
return Object.prototype.toString.call(data).replace(/\[object (\w+)\]/, '$1').toLowerCase()
}
console.log(isTypeOf({})) // object
console.log(isTypeOf([])) // array
console.log(isTypeOf("ss")) // string
console.log(isTypeOf(1)) // number
console.log(isTypeOf(false)) // boolean
console.log(isTypeOf(/w+/)) // regexp
console.log(isTypeOf(null)) // null
console.log(isTypeOf(undefined)) // undefined
console.log(isTypeOf(Symbol("id"))) // symbol
console.log(isTypeOf(() => { })) // function
**9.遞歸求數組的和
getRecursionList(list){
function getSum(i) {
return i >= list.length ? 0 : list[i] + getSum(i+1)
}
// return getSum(0) // getSum(0) 相當于調用了這個函數
return getSum(0)
}