javascript - 初始化类型为 [key, value : Array] in shorthand form 的对象

标签 javascript

假设我想遍历一个字符数组并构建一个表示每个字符出现频率的对象,例如:

const frequency = {};
const str = 'stackoverflow';

for (let i = 0; i < str.length; i++) {
    frequency[str[i]] = (frequency[str[i]] + 1) || 1;
}

有了上面的内容,我们期望一个对象的形式是:

{
    s: 1,
    t: 1,
    a: 1,
    c: 1,
    k: 1,
    o: 2,
    v: 1,
    e: 1,
    r: 1,
    f: 1,
    l: 1,
    w: 1
}

现在假设我想遍历一个嵌套数组的数组,每个嵌套数组的形式都是 [id, val]。我可以创建一个对象,这样我最终会得到多个键,每个键代表不同的 id 和一个相应的数组,以相同的简写方式填充 values表格如上?

例如:

[ [1,2], [1,3], [1,5], [2,7], [3,0], [1,10] ]

{
    1: [2,3,5,10],
    2: [7],
    3: [0]
}

是否有类似于:

const map = {};

for (let i = 0; i < list.length; i++) {
    map[list[i][0]] = (map[list[i][0].push(map[list[i][1])) || [list[i][1]];
}

最佳答案

.reduce() 的函数式方法:

const list = [[1,2],[1,3],[1,5],[2,7],[3,0],[1,10]]
const x = list.reduce((a, [k, v]) => (a[k] = [...a[k] || [], v], a), {})
console.log(x)

编辑:偷了@jered 的更好的条件而不是三元

关于javascript - 初始化类型为 [key, value : Array] in shorthand form 的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58424134/

相关文章:

javascript - 如何在JS中设置div内的值

javascript - 页面上有多个 SVG

php - URL 类/方法路由的安全性

javascript - 使用Ajax调用表数据中的php文件出错

javascript - 显示多个幻灯片的 HTML 页面

javascript - JS函数勾选所有Checkbox,这个不需要

javascript - 如何使用命令行工具测试 jQuery?

javascript - 在单独的 Canvas 中渲染多个视频

asp.net - Javascript 中的 window.onload 有 += 吗?

javascript - 为什么反向 animate() 没有立即触发?