JavaScript 中断 forEach 循环

1、使用 Array.prototype.some() 方法代替 some() 方法会在找到第一个符合条件的元素时停止循环。 例如: let array = [1, 2, 3, 4, 5]; array.some(function(element, index, array) { if (eleme ...

JavaScript 判断变量的类型

JavaScript 中有多种方法来判断变量的类型,如 typeof、instanceof、Object.prototype.toString.call()、constructor属性、Symbol.toStringTag属性以及 lodash 等第三方库 ...

JavaScript 浅拷贝和深拷贝

JavaScript 中的拷贝分为两种:浅拷贝和深拷贝。
浅拷贝是指在拷贝过程中,只拷贝一个对象中的指针,而不拷贝实际的数据。所以,浅拷贝中修改新对象中的数据时,原对象中的数据也会被改变。
深拷贝是指在拷贝过程中,拷贝一个对象中的所有数据,并创建一个新对象,对新对象进行操作并不会影响到原对象。 ...

JavaScript 二分查找

二分查找(Binary Search)是一种在有序数组中查找目标元素的查找算法。它的基本思路是:在数组的中间元素开始,如果该元素等于目标元素,则查找成功;如果该元素大于目标元素,则在左半部分继续查找;如果该元素小于目标元素,则在右半部分继续查找。这样一直重复这个过程,直到查找成功或者查找失败。 ...

JavaScript 面向切面编程(AOP,装饰者模式)

JavaScript 面向切面编程 (AOP) 是一种编程思想和实现方式,它将一些关注点(例如日志记录、安全性检查、性能监控等)从主题对象中分离出来,通过“横切关注点”的方式在程序中动态地织入这些关注点。这样可以避免在主题对象中嵌入大量的关注点代码,使得代码更加简洁和可维护。 ...

JavaScript 原型和原型链

JavaScript 是一种基于原型继承的语言。在 JavaScript 中,对象是通过原型链来继承属性和方法的。 一、原型 每一个对象都有一个 proto 属性,该属性指向该对象的原型。原型本质上也是一个对象,所有的对象都拥有一个原型,除了 Object.prototype。 JavaScript ...

P1005 [NOIP2007 提高组] 矩阵取数游戏

题目传送门 前言 今天依旧是不写高精的一天呢!(是的,这位作者又只拿了开 $LL$ 的 $\color{yellow}{60}$ 分) 思路描述 看到数据 $n,m \le 80(30)$ 就知道数组可以任性开,心理有个底后,再来看题目。 状态描述 首先肯定要来一个 $dp_{i,j}$ 来表示第 ...

JavaScript 获取对象长度

JavaScript 中,对于普通对象,不能直接使用 length 来获取对象的长度,因为 JavaScript 对象并不是一种有序的集合,没有长度的概念。
对于数组或者类数组对象,可以使用 .length 来获取它们的长度,因为它们是有序集合。
对于字符串也可以使用.length来获取长度,因为字... ...

JavaScript 图像压缩

JavaScript 可以使用类似于 canvas 和 web workers 来实现图像压缩。
使用 canvas,可以将图像绘制到 canvas 上,然后使用 canvas 提供的 toBlob() 或 toDataURL() 方法将其转换为不同格式的图像。在这些方法中指定图像质量参数即可实现压... ...

JavaScript 防抖和节流

JavaScript 防抖和节流是两种常见的性能优化技术,用于减少函数的执行次数。
防抖(debounce)是指在一段时间内,如果有多次触发事件,则只执行最后一次事件。
节流(throttle)是指在一段时间内,只执行一次事件。 ...