Javascript/ES6 查找唯一元素并在数组中对它们进行计数

标签 javascript arrays

以一个假想的已售商品数组为例,奇怪的是,我们只对商品名称和值(value)感兴趣:

let items = [
    { title: "Trumping the Horns", value: 5.95 },
    { title: "Rocking about", value: 20.00 },
    { title: "Trumping the Horns", value: 5.95 }
]

我知道我可以很容易地获得具有唯一值的数组:

const uniqueSales = [...new Set(items.map(item => item.title))];

但是,举例来说,我想知道我售出的每件商品有多少,或者它们的累计值(value)?所以:

[
    { title: "Trumping the Horns", amount: 2 },
    { title: "Rocking about", amount: 1 }
]

是否也可以映射它们,而不必对该数组进行一些疯狂的排序和迭代?最好是单线。不在服务器端执行此操作的主要原因是我对同一数据有相当多的不同操作,只发送一次并让客户端处理数据的操作和呈现似乎是最正确的。

最佳答案

你可以使用 Map并存储对结果数组的新插入对象的引用。

var items = [{ title: "Trumping the Horns", value: 5.95 }, { title: "Rocking about", value: 20.00 }, { title: "Trumping the Horns", value: 5.95 }],
    result = items.reduce(
        (map => (r, a) => (!map.has(a.title) && map.set(a.title, r[r.push({ title: a.title, amount: 0 }) - 1]), map.get(a.title).amount++, r))(new Map),
        []
    );

console.log(result)

关于Javascript/ES6 查找唯一元素并在数组中对它们进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42480855/

相关文章:

c# - 有没有办法保护我的幻灯片图像

javascript - 您如何使用一个代码块来定位网站上的所有类? (没有jquery)

c++ - C++ opencv中的条件分配

javascript - 如何从单选按钮获取不同的值?

javascript - jquery 在页眉和页脚之间滚动

JavaScript XML 解析

javascript - 在 Javascript 中递归调用函数?

arrays - Kotlin - 遍历数组

PHP:像在 Python 中一样获取数组值?

php - 具有匹配特征的PHP数组的元素如何处理成一系列聚合?