分享一些JavaScript的实用方法

6,155 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

直奔主题吧


使用new Array().fill()创建数组

例:创建二维数组

let arr = new Array(5).fill([])
console.log(arr);   //   [ [], [], [], [], [] ]

特别注意使用new Array创建的二维数组的每一项引用地址都是相同的,所以在循环时会出现意料之外的错误

例:创建初始元素为0的输出

let arr = new Array(5).fill([])
console.log(arr);   //  [ 0, 0, 0, 0, 0 ]

使用reduce()进行数组元素的累和,累积,以及异或运算

官方文档解释:reduce()  方法对数组中的每个元素按序执行一个由您提供的 reducer 函数,每一次运行 reducer 会将先前元素的计算结果作为参数传入,最后将其结果汇总为单个返回值。

例:对数组元素进行累和运算

let arr = [1,2,3,4,5]
let sum = arr.reduce((a,b)=>a+b)
console.log(sum);     // 15

例:对数组元素进行累积计算

let arr = [1,2,3,4,5]
let res = arr.reduce((a,b)=>a*b)
console.log(res);     // 120

使用map()进行数组元素的统一操作

官方文档解释:map()  方法创建一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成。

例:对数组中所有元素进行*2操作

let arr = [1,2,3,4,5]
arr = arr.map(item=>item*2)
console.log(arr);   //[ 2, 4, 6, 8, 10 ]

使用filter()来过滤数组中你想获得的元素

官方文档解释:filter()  方法创建一个新数组,其包含通过所提供函数实现的测试的所有元素。

例:过滤数组中所有偶数

let arr = [1,4,6,3,7,9,3,6]
arr = arr.filter(item=>item%2==0)
console.log(arr);    //   [ 4, 6, 6 ]

例:取两个数组的交集部分

let arr1 = [1,4,6,3,7,9,3,6]
let arr2 = [3,7,9]
let res = arr1.filter(item=>arr2.includes(item))
console.log(res);   //   [ 3, 7, 9, 3 ]

例:取两个数组的差

let arr1 = [1,4,6,3,7,9,3,6]
let arr2 = [3,7,9]
let res = arr1.filter(item=>!arr2.includes(item))
console.log(res);   //   [ 1, 4, 6, 6 ]

使用Array.from()将类似数组转换为数组

官方文档解释:Array.from()  方法对一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例

类似数组解释:拥有长度length 和若干索引index的对象

例:

let str  = 'abc'
str = Array.from(str)
console.log(str);   //   [ 'a', 'b', 'c' ]

使用Set()对数组元素进行去重

官方解释:Set 对象允许你存储任何类型的唯一值,无论是[原始值]或者是对象引用

let arr1 = [2,2,2,2,4,4,4,2,2,3]
arr1 = new Set(arr1)
console.log(arr1);   //   Set(3) { 2, 4, 3 }

使用Object.entries()将对象转换为数组,我们可以通过索引取当中的值

官方解释:Object.entries() 方法返回一个给定对象自身可枚举属性的键值对数组

let obj = {
    a: 1,
    b: 2,
    c: 3
}
obj = Object.entries(obj)
console.log(obj);  //   [ [ 'a', 1 ], [ 'b', 2 ], [ 'c', 3 ] ]

使用sort()对对象的键值对进行排序,特定情况下也许可以方便取值

一天朋友问我,我不知道对象中键值对的键,可以取到对象中的最大值吗?

我想到通过Object.entries() 将对象转换为键值对数组,对键值对数组中的值进行排序来达到目的

let obj = {
    a: 6,
    b: 4,
    c: 3,
    d: 5,
    g: 8
}
obj = Object.entries(obj)     //   [ [ 'a', 6 ], [ 'b', 4 ], [ 'c', 3 ], [ 'd', 5 ], [ 'g', 8 ] ]
obj.sort((a,b)=>b[1]-a[1])   //    [ [ 'g', 8 ], [ 'a', 6 ], [ 'd', 5 ], [ 'b', 4 ], [ 'c', 3 ] ]
console.log(obj[0][1]);     //  8

使用toString() 将数字变为n进制

let num = 12
console.log(num.toString(2));   //  1100
console.log(num.toString(4));   //  30
console.log(num.toString(8));   //  14