如何在reduce函数中动态设置键

zeK*_*oko 2 javascript

我有一个包含所有拼字游戏字母数量的.txt文件:

A-9, B-2, C-2, D-4, E-12, F-2, G-3, H-2, I-9, J-1, K-1, L-4, M-2, N-6, O-8, P-2, Q-1, R-6, S-4, T-6, U-4, V-2, W-2, X-1, Y-2, Z-1

我试图从这里得到一个对象数组,其中键是字母,值是数字.

我遇到的问题是我试图将密钥设置为数组中的第一个项目(我之前拆分)[A, 9].

我的代码如下.任何提示都会感激不尽:)

import fs from 'fs'

var output = fs.readFileSync('scrabble-quantities.txt', 'utf-8')
    .trim()
    .split(', ')
    .map(item => item.split('-'))
    .reduce((quantities, item) => {
        quantities.push({
            item[0]: item[1]
        })
        return quantities
    }, [])    
Run Code Online (Sandbox Code Playgroud)

谢谢

pid*_*pid 6

我会使用一个对象而不是一个数组.JS的工作方式更简单,更自然:

// ...
.reduce((quantities, item) => {
    quantities[item[0]] = item[1];
    return quantities;
}, {});
Run Code Online (Sandbox Code Playgroud)

然后生成的output对象(以JSON表示法):

{
  "A": 9,
  "B": 2,
  // ...
  "Z": 1
}
Run Code Online (Sandbox Code Playgroud)

编辑:记住价值类型

如果您希望该值为实际数字,则必须在赋值中解析它:

parseInt(item[1], 10)
Run Code Online (Sandbox Code Playgroud)