Javascript 如何在reduce函数中动态设置密钥
我有一个.txt文件,其中包含所有拼字字母数量:Javascript 如何在reduce函数中动态设置密钥,javascript,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] 我的代码如下。如有任何提示,我们将不胜感激:) 谢谢我会使用对象而不是数组。JS的工作方式更简单、更自
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]
我的代码如下。如有任何提示,我们将不胜感激:)
谢谢我会使用对象而不是数组。JS的工作方式更简单、更自然:
// ...
.reduce((quantities, item) => {
quantities[item[0]] = item[1];
return quantities;
}, {});
由此产生的输出
对象是(JSON表示法):
编辑:注意值类型
如果希望该值为实际数字,则必须在赋值中使用以下公式对其进行解析:
parseInt(item[1], 10)
要动态创建密钥(属性名称),需要执行以下两项操作之一:
var o = {};
o[item[0]] = item[1];
[]
在属性初始值设定项中使用动态属性名称:
// ES2015 (ES6) ONLY
quantities.push({
[item[0]]: item[1]
})
也就是说,我对这个问题的看法不同,使用正则表达式,最终得到的是一个由字母键控的对象,而不是一个对象数组:
var str=“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”;
变量数量={};
str.match(/[A-Z]-\d/g).forEach(函数(条目){
数量[输入字符(0)]=+条目。替换(/.-/,“”);
});
控制台日志(数量)
您希望生成的数组是什么?reduce()
的初始值不应该是{}
而不是[]
?太好了!我错过了:)谢谢。你错过了从字符串到整数的值转换@谢谢,我添加了它作为编辑,因为它不确定他想要的值是数字还是数字。邪恶-再次感谢伙计们-parseInt是我所需要的。@Pointy:谢谢你的排错修复!
var o = {};
o[item[0]] = item[1];
// ES2015 (ES6) ONLY
quantities.push({
[item[0]]: item[1]
})