1.过滤错误值
如果要过滤数组中的false、0、null、undefined等值,可以这样做:
const array = [1, 0, undefined, 6, 7, ‘’, false]; array.filter(Boolean);
2.判断简化
如果有这样的判断:
if(a === undefined || a === 10 || a=== 15 || a === null) { //… }
可以使用数组来简化这个判断逻辑:
if([undefined, 10, 15, null].includes(a)) { //… }
这样,代码会更简单,更容易扩展。如果还有判断需要等于a,可以直接加到数组中。
3.初始化数组
如果需要初始化一个指定长度的一维数组并指定一个默认值,可以这样完成:
const array = Array(6).fill(‘’); // [‘’, ‘’, ‘’, ‘’, ‘’, ‘’]
如果需要初始化一个指定长度的二维数组并指定一个默认值,可以这样做:
const matrix = Array(6).fill(0).map(() => Array(5).fill(0));
4.清空数组
要清除数组,请将数组的长度设置为 0:
let array = [“A”, “B”, “C”, “D”, “E”, “F”] array.length = 0 console.log(array) // []
5. 连接数组
我们需要连接几个数组,我们可以使用扩展运算符:
const start = [1, 2] const end = [5, 6, 7] const numbers = [9, …start, …end, 8] // [9, 1, 2, 5, 6, 7 , 8]
或者使用数组的 concat() 方法:
const start = [1, 2, 3, 4] const end = [5, 6, 7] start. concat(end); // [1, 2, 3, 4, 5, 6, 7]
但是在使用 concat() 方法时,如果要合并的数组很大,concat() 函数在创建单独的新数组时会消耗大量内存。这时候可以使用以下方法合并数组:
Array.prototype.push.apply(start, end)
这样,显着减少了内存使用量。
6.将数组元素转换为数字
如果你有一个数组,并且需要将数组中的元素转换为数字,可以使用 map 方法来实现:
const array = [‘12’, ‘1’, ‘3.1415’, ‘-10.01’]; array.map(Number); // [12, 1, 3.1415, -10.01]
这样,map 将在遍历数组时对数组的每个元素执行 Number 构造函数并返回结果。
7.将类数组转换为数组
可以使用以下方法将类似数组的参数转换为数组:
Array.prototype.slice.call(arguments);
除此之外,还可以使用展开运算符来实现:[…arguments]
8.缩短console.log()
每次调试都要写很多console.log()会比较麻烦,可以用下面的形式来简化这段代码:
const c = console.log.bind(document) c(321) c(“hello mygod”)
每次执行 c 方法时都会这样做。
9.删除一个数组元素
如果我们想删除数组中的一个元素,可以使用delete来实现,但是删除后的元素会变成undefined,不会消失,执行的时候会消耗很多时间,大部分情况下不能满足我们要求。所以,你可以使用数组的 splice() 方法来移除数组元素:
const array = [“a”, “b”, “c”, “d”] array.splice(0, 2) // [“a”, “b”]
10.检查对象是否为空
我们需要检查对象是否为空,我们可以使用如下:
Object.keys({}).length // 0
Object.keys({key: 1}).length // 1
Object.keys() 方法用于获取对象的键并返回包含这些键值的数组。如果返回的数组长度为 0,则对象必须为空。
11.从末尾开始访问元素。例如,访问数组的最后一个元素
Array.prototype.at()。
at() 方法接收一个整数值并返回该索引的项目,允许正数和负数。负整数从数组中的最后一个项目开始倒数。
方括号符号没有问题,但对于后面的项目,可以调用array.at(-1),无须再访问 array.length
(参见以下示例):
const array1 = ['a', 'b', 'c'];
console.log(arr.at(0)) // logs 'a'
console.log(arr.at(-2)) // logs 'b'
console.log(arr.at(-1)) // logs 'c'
12.?操作符
?操作符或可选的链式运算符是一个很有用的运算符,用于检查一个值是否已经被设置,当它被设置后再继续。
if(data && data.subdata && data.subdata.name === "cool") {
console.log("hi")
}
// 可以这样写
if(data?.subdata?.name === "cool") {
console.log("hi")
}