正在寻找一种简洁/简洁的方法来在JavaScript中构建哈希表(即频率)

问题描述 投票:1回答:1

我正在寻找一种简洁的方法来从JavaScript中的(数字)数组构建哈希表。

((至少在很多可以优化以一次通过运行的O(n ^ 2)型问题上出现了很多,像那些Leetcode型'算法'问题。)

似乎它可能是一个简洁的内胆...但是这里是我所拥有的两个内胆:

const freq = {}; // An Object is often used to implement a Hash Table in JavaScript
nums.forEach(num => freq[num] = freq[num] === undefined ? 1 : freq[num] + 1);

...假设numsArray<number>,freq表示概念性哈希表数据结构,如下所示:

const nums = [2, 0, 2, 0, 0, 3, 0, 2, 0, 1];
// freq == { '0': 5, '1': 1, '2': 3, '3': 1 }

有人知道在语法上更简洁的方法吗?

javascript arrays dictionary hashtable
1个回答
2
投票

可以reduce和一些reduce(滥用)来做,但是坦率地说,我想不出这样做的理由。 :-)看起来像这样:

comma operator

实时示例:

const freq = nums.reduce((acc, num) => (acc[num] = (acc[num] || 0) + 1, acc), {});
© www.soinside.com 2019 - 2024. All rights reserved.