在数据库中,我有两个列: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
答案 0 :(得分: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));
答案 1 :(得分:2)
你想通过查询在一个小组中这样做吗?这里有很多例子。 e.g。
MySQL Query with count and group by
等
如果您只有来自API的服务器请求,您可能需要。创建一个像哈希表 { id:数 }
答案 2 :(得分:1)
函数从一个数组列中获取所有值并以数组形式返回。
然后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++;
}
}