我从api获取数据并将其显示在包含2列的表中。第一列包含名称,第二列包含数量,如表1所示。 api中的数据包含重复的名称,并且相同名称的数量不同。我希望以这样的方式显示它总结唯一名称的数量,并仅显示唯一的名称和总量,如表2所示。我正在使用ReactJS来显示表格。得到这个结果的更好的逻辑是什么。我正在从api中检索数据作为json并将其转换为数组。我对React很新,发现很难使用数据。
答案 0 :(得分:1)
核心问题并不是真正的反应问题,因此,考虑到我无法影响API,我们可以在javascript中解决聚合问题。一个有用的库是“lodash” - 它知道如何做一个经典的“reduce”并知道如何从一个对象制作一个数组。在节点控制台上解决这个问题,我们得到:
npm install lodash
node
>
...
const ld = require("lodash");
a = [{n: "joe", d: 1},{n: "joe", d: 1}, {n: "joe", d: 3} ]
b = ld.reduce(a, (agg, {n,d}) => { agg[n] = (agg[n] || 0) + d; return agg; }, {});
ld.map(b, (val,prop) => ({ n: prop, d: val});
最后一行的返回值为您提供
[ { n: 'joe', d: 5 } ]