我正在寻找一种简洁的方法来从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);
...假设nums
是Array<number>
,freq表示概念性哈希表数据结构,如下所示:
const nums = [2, 0, 2, 0, 0, 3, 0, 2, 0, 1];
// freq == { '0': 5, '1': 1, '2': 3, '3': 1 }
有人知道在语法上更简洁的方法吗?
您可以用reduce
和一些reduce
(滥用)来做,但是坦率地说,我想不出这样做的理由。 :-)看起来像这样:
comma operator
实时示例:
const freq = nums.reduce((acc, num) => (acc[num] = (acc[num] || 0) + 1, acc), {});