实用 JavaScript 技巧

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")
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值