mysql - 如何计算数组中对象的不同值

标签 mysql node.js

在数据库中我有两个列:idvalue。我想检查我的 result 中有多少个不同的 id,我该怎么做?

我试图想出一个解决方案,但我没有比 countDifferentId(){//做一些神奇的计算更成功

结果 如下所示:

[ RowDataPacket {
    id: 76561198115203520,
    value: 73 },
  RowDataPacket {
    id: 76561198115029751,
    value: 73 }
  RowDataPacket {
    id: 76561198115702984,
    value: 73 },
  RowDataPacket {
    id: 76561198115203520,
    value: 73 } ]

所以countDifferentId()的结果应该是3

最佳答案

如果你想在 javascript 端完成这项工作,你可以这样做:

const rowDataPackets = [
    {
        id: 76561198115203520,
        value: 73
    },
    {
        id: 76561198115029751,
        value: 73
    },
    {
        id: 76561198115702984,
        value: 73
    },
    {
        id: 76561198115203520,
        value: 73
    }
];


function countDifferentId(array){
    // Object with key=id to count unique ids and value is true (or whatever)
    const uniqueIds = array.reduce((acc, data) => Object.assign(acc, {[data.id]:true}) , {});
    // Number of unique ids is the number of keys
    return Object.keys(uniqueIds).length;
}

console.log(countDifferentId(rowDataPackets));

关于mysql - 如何计算数组中对象的不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48654555/

相关文章:

mysql - Magento 客户终身值(value)

mysql - 为什么 MySQL Data Connector 比 MySQL Query Browser 花费的时间长得多?

mysql - 选择并连接所有表

php - 使用 GROUP BY ... HAVING 优化 MySQL 查询时遇到问题

angularjs - Node 调用异常 : Attempt to connect to Node timed out

mysql - 我正在尝试在数据库中插入数据.csv 文件,它会将标题显示为列记录吗?

javascript - node.js - 我无法重现来自服务器的渐进式响应

node.js - 如果特定公会不存在,则会出现数据库错误

java - Java 的 Deflater 类的 Node.js/Javascript 等价物

node.js - npm 版本低于我安装的版本(ubuntu 22.04)(先 apt 然后二进制安装)