javascript - JavaScript - 转换这个数据结构
问题描述
当我有这个数据结构的数组时:
[[3, 16, 1]
[3, 17, 1]
[3, 18, 1]
[3, 19, 1]
[3, 20, 1]
[3, 19, 1]
[3, 21, 1]
[3, 23, 1]
[3, 16, 1]
[3, 17, 1]
[2, 24, 1]
[2, 25, 1]
[2, 26, 1]
[2, 24, 1]]
我想计算数组元素并将其乘以数组的最后一个数字,如下所示:
[[3, 16, 2]
[3, 17, 2]
[3, 18, 1]
[3, 19, 2]
[3, 20, 1]
[3, 21, 1]
[3, 23, 1]
[2, 24, 2]
[2, 25, 1]
[2, 26, 1]]
我试图这样做:
array.forEach(function(x) {
counts[x] = (counts[x] || 0)+1;
});
但这改变了数据结构,还有另一种形式吗?
解决方案
您的代码的问题在于counts[x]
. 您不能使用数组来索引对象。
您可以通过对数组进行字符串化来解决该问题。也就是说,使用:
counts[String(x)] = (counts[String(x)] || 0)+1;
推荐阅读
- python - 如何选择具有特定值的行?
- acumatica - 执行操作时如何强制用户输入自动提交和保存?
- sql - 在 SQL 中查找一对行
- performance - DataProc 处理时间超过 3 小时,比预期的不到 15 分钟
- html - 处理工具提示中的转义字符
- javascript - 在右列继续滚动时创建固定的左列
- html - 相对 div 中的文本显示在绝对 div 之上
- python - VSCode 未在 Mac OS 上检测到 Python 虚拟环境
- javascript - 在 PHP 中按下按钮后,Ajax 多次运行和插入行数据
- python - Dask Dataframe:重新采样从多个镶木地板文件加载的分区数据