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
是什么意思?我的意思是,我想获得计数中每个分组元素的索引,如何才能做到这一点,以便我可以选择要查看的分组元素。您可以使用对象获取键。键(计数)
或从中获取条目。对象没有索引。非常感谢您的大力帮助!