# 使用 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

一些 JavaScript 的实用方法 (opens new window)