如何更好地利用JavaScript数组

用Array.includes替换Array.indexOf


Array.indexOf“返回可以找到给定元素的第一个索引,”MDN文档说。但是,如果我们只需要知道我们的数组是否包含值,该怎么办?对于这种情况,我建议使用返回布尔值的Array.includes。


使用Array.find而不是Array.filter


Array.filter是一个非常有用的方法。它从另一个数组创建一个新数组,所有项都传递回调参数。正如其名称所示,我们必须使用此方法进行过滤,并获得更短的数组。


但是,如果我们知道我们的回调函数只能返回一个项目,我就不推荐它 - 例如,当使用通过唯一ID过滤的回调参数时。在这种情况下,Array.filter将返回一个只包含一个项目的新数组。通过查找特定的ID,我们的意图可能是使用数组中包含的唯一值。


我们来谈谈性能。要返回与回调函数匹配的所有项,Array.filter必须浏览整个数组。此外,让我们假设我们有数百个项目满足我们的回调参数。我们过滤的阵列会非常大。


避免这些情况,我建议使用Array.find。它需要一个像Array.filter这样的回调参数,并返回满足此回调的第一个元素的值。此外,只要项目满足回调的时候,Array.find就会停止。无需浏览整个阵列。


用Array.some替换Array.find


在前面的例子中,我们看到Array.find需要一个回调作为参数并返回一个元素。如果我们需要知道我们的数组是否包含值,Array.find是最好的解决方案吗?可能不是,因为它返回一个值,而不是一个布尔值。使用包含对象的数组,Array.find将返回整个对象,而我们可能只需要一个布尔值。这可能会导致性能问题。对于这种情况,我建议使用Array.some,它返回所需的布尔值。


《前端精髓》

268月

如何更好地利用JavaScript数组

Web的新图像格式WebP

238月

如何更好地利用JavaScript数组

学习编程你要记住以下几点



如何更好地利用JavaScript数组