我一直想得到这个,但对我来说还是很难.

The data:

let data = [
 [1, "Item A", "Food", 10],
 [2, "Item B", "Food", 5],
 [3, "Item C", "Food", 30],
 [4, "Item A", "Hygiene", 30],
 [4, "Item A", "Hygiene", 50],
 [6, "Item D", "Food", 7],
 [3, "Item C", "Food", 8],
 [1, "Item A", "Food", 60],
]

Result

let result = [
 [1, "Item A", "Food", 70],
 [2, "Item B", "Food", 5],
 [3, "Item C", "Food", 38],
 [4, "Item A", "Hygiene", 80],
 [6, "Item D", "Food", 7],
]

这是我认为应该采用的基本reduce(),但是如何设置标准e生成唯一行呢?

const array1 = [1, 2, 3, 4];
const initialValue = 0;
const sumWithInitial = array1.reduce(
  (previousValue, currentValue) => previousValue + currentValue,
  initialValue
);
console.log(sumWithInitial);

感谢您的帮助!

推荐答案

您可以使用组合键进行分组.

const
    data = [[1, "Item A", "Food", 10], [2, "Item B", "Food", 5], [3, "Item C", "Food", 30], [4, "Item A", "Hygiene", 30], [4, "Item A", "Hygiene", 50], [6, "Item D", "Food", 7], [3, "Item C", "Food", 8], [1, "Item A", "Food", 60]],
    result = Object.values(data.reduce((r, a) => {
        const key = [0, 1].map(i => a[i]).join('|');
        if (r[key]) r[key][3] += a[3];
        else r[key] = [...a];
        return r;
    }, {}));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

Javascript相关问答推荐

导入图像与内联包含它们NextJS

Mongodb拥有5亿个文档,我想根据JavaScript驱动程序中的两个字段使用regEx进行搜索,而不是模式

使用JavaScript重命名对象数组中的键

在JS中获取名字和姓氏的首字母

为什么我达到了时间限制!?LeetCode链接列表循环(已解决,但需要解释!)

如何获取转换字节的所有8位?

使用AJX发送表单后,$_Post看起来为空

微软Edge Select 间隙鼠标退出问题

Angular material 拖放堆叠的牌副,悬停时自动展开&

Spring boot JSON解析错误:意外字符错误

在react js中使用react—router—dom中的Link组件,分配的右侧不能被 destruct ''

当点击注册页面上的注册按钮时,邮箱重复

手机上的渲染错误文本必须在文本组件中渲染,但在浏览器上没有问题<><>

使用Java脚本根据按下的按钮更改S文本

未定义引用错误:未定义&Quot;而不是&Quot;ReferenceError:在初始化&Quot;之前无法访问';a';

是什么导致了这种奇怪的水平间距错误(?)当通过JavaScript将列表项元素追加到无序列表时,是否在按钮之间?

从另一个数组中的对应行/键值对更新数组中的键值对对象

当从其他文件创建类实例时,为什么工作线程不工作?

MongoDB通过数字或字符串过滤列表

react 路由DOM有条件地呈现元素