Javascript 如何按属性分组并计算庞大的项目列表

Javascript 如何按属性分组并计算庞大的项目列表,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我有一个农作物的列表,包括它们的属性,如种植地点、使用的种植技术、经验和种植的农作物本身。我已经通过裁剪和坐标(代表位置)对它们进行了分组,但它们是分开分组的。下面是我对它们进行分组和计数的代码 // Initialize Firebase firebase.initializeApp(firebaseConfig); // Reference messages collection // var messagesRef = firebase.database().ref('Planting-

我有一个农作物的列表,包括它们的属性,如种植地点、使用的种植技术、经验和种植的农作物本身。我已经通过裁剪和坐标(代表位置)对它们进行了分组,但它们是分开分组的。下面是我对它们进行分组和计数的代码

// Initialize Firebase
firebase.initializeApp(firebaseConfig);

// Reference messages collection
// var messagesRef = firebase.database().ref('Planting-Calendar-Entries');

database = firebase.database()

var ref = database.ref('Planting-Calendar-Entries');
ref.on('value', gotData, errData);

function gotData(data){
  console.log(data.val())
    var veggie = data.val();
    const counts = Object.values(veggie).reduce((counts, { Veg_planted, coordinates }) => ({
        ...counts,
        [Veg_planted]: (counts[Veg_planted] || 0) + 1,
        [coordinates]: (counts[coordinates] || 0) + 1
      }), {});
      console.log(counts);
  }
function errData(err){
    console.log('Error!');
    console.log(err)
}
以下是上述代码的输出:

"-35.2294059, 173.9472028": 1
"-6.2087634, 106.845599": 3 ​ 
"-1.2920659, 36.8219462": 1 ​
"-0.3688967, 35.286286": 10 ​ 
"-0.3206518, 35.21896820000001": 1 ​
"-0.1634664, 35.5931397": 1 ​ 
"-0.3452364, 35.1519724": 2 
Ageratum: 3 
"Balloon Flower": 2
​Beetroot: 1
"Bells Of Ireland": 2
Broccoli: 1
Cabbage: 12
我希望将它们按如下方式分组和计数:

"-0.3688967, 35.286286", Cabbage: 8
"-1.2920659, 36.8219462", Cabbage: 2
"-0.3206518, 35.21896820000001", Broccoli: 1
"-0.3688967, 35.286286", Beetroot: 1
"-0.3452364, 35.1519724", Ageratum: 2

如果你知道我能做什么,我会很感激的。谢谢

看起来,您需要将
Veg_plant
添加到具有坐标的组合关键点

在回调函数之前:

 var space = ', '
reduce的回调:

(counts, { Veg_planted, coordinates }) => {
    const key = [...coordinates, space, Veg_planted].join('');
    counts[key] = (counts[key] ||0) + 1;
    return counts;
}

你有原始数据集吗?是的,我有一个连接到我的firebase数据库的链接,数据就在那里。谢谢尼娜的帮助。我想进一步访问这些单独的组,即计数[0]。我是否需要另一个函数,它现在将计数作为原始数据/输入,以便我能够访问每个组?
counts
是一个对象。使用
0
是什么意思?我的意思是,我想获得计数中每个分组元素的索引,如何才能做到这一点,以便我可以选择要查看的分组元素。您可以使用
对象获取键。键(计数)
或从中获取条目。对象没有索引。非常感谢您的大力帮助!