在一个数据库中,我有两个列:id
和value
。我想查看我的id
中有多少不同的result
,我该怎么做?
我试图想出一个解决方案,但我没有成功更多的countDifferentId(){// do some magic calculations}
result
看起来像这样:
[ 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 Query with count and group by
等等
如果您只有API的服务器请求,您可能需要。创建一个像{id:count}这样的哈希表
函数从一个数组列中获取所有值并作为数组返回。
然后for循环使用数组来存储计数值,每次检查数组以确保只计算一次值。
function getCol(myarray, col){
var column = [];
for(var i=0; i<myarray.length; i++){
column.push(myarray[i][col]);
}
return column;
}
cols = getCol(result, 'id');
var count = 0;
var used = [];
for(var i = 0; i<cols.length;i++){
if(!used.indexOf(cols[i])){
used.push(cols[i]);
count++;
}
}