我从几页读到的密集阵列的解释似乎彼此矛盾.我想要一些帮助来理解它是什么.
虽然一些链接(搜索结果1,搜索结果2)表明它只是一个数组,其中:
暗示JavaScript数组是密集的.
直到这里才有意义.
但是,这篇来自Mozilla开发者网络(MDN)的JavaScript指南的声明说:
由于数组的长度可以随时改变,并且数据可以存储在数组中的非连续位置,因此不能保证 JavaScript数组 密集 ; 这取决于程序员如何选择使用它们.一般来说,这些都是方便的特征; 但如果这些功能不适合您的特定用途,您可以考虑使用类型化数组.
这让我很困惑.我的问题是:
MDN页面上的语句是什么意思,它说JavaScript数组不能保证密集?如果它意味着以下不是密集数组,因为它的一个或多个元素是undefined在初始化时,那么为什么我上面列出的链接似乎表明JavaScript数组确实是密集的?
var array = new Array(1, , 3, ); // [1, undefined, 3, undefined]
Run Code Online (Sandbox Code Playgroud) 嗨,我有这样的阵列
var a = [5, 5, 5, 2, 2, 2, 2, 2, 9, 4];
Run Code Online (Sandbox Code Playgroud)
我的目标是计算唯一值并报告其中的任何项目,结果很好
Array [
[5, 3],
[2, 5],
[9, 1],
[4, 1]
]
Run Code Online (Sandbox Code Playgroud)
我找到了一个解决方案,可以在另一篇文章中找到[ 计算JavaScript数组元素的出现次数
@Emissary解决方案对我来说是最好的,问题是这个解决方案过去并添加一些我不需要的新功能,我不能直接回复该帖子,询问如何只有我需要的数组:d
@Emissary加了
console.log(key +':'+ val)
我的第一个想法是,而不是console.log我可以推送2d数组中的每个值,但我认为这不是一个好主意,因为如果我很了解@Emissary解决方案,那么解决方案的第一部分就是我需要的数组.
知道如何"隔离"这个特定阵列吗?