Javascript 我有一个唯一的id列表,我想在其中为每个id实现一个计数器,每个id数据将每10分钟刷新一次
数据将每10分钟刷新一次,计数必须相应更改Javascript 我有一个唯一的id列表,我想在其中为每个id实现一个计数器,每个id数据将每10分钟刷新一次,javascript,node.js,arrays,json,Javascript,Node.js,Arrays,Json,数据将每10分钟刷新一次,计数必须相应更改 const fs = require('fs'); const readfile = require('readfile'); function readFile(file_name) { return new Promise(function(resolve, reject) { fs.readFile(file_name, (err, data) => { if (err) return re
const fs = require('fs');
const readfile = require('readfile');
function readFile(file_name) {
return new Promise(function(resolve, reject) {
fs.readFile(file_name, (err, data) => {
if (err) return reject(err);
return resolve(data);
});
});
}
async function execute(file_name) {
try {
const file_data = await readFile(file_name);
const records = JSON.parse(file_data);
return records.map(single_record => single_record.rdid);
}
catch(e) {
// error handling
}
}
execute("data.json").then(push => console.log(push));
这是我的JSON文件
[
{"edid":"r7vr8r", "rdid":"86596", "rssi":"15", "batt":"1.35"},
{"edid":"v8r48e", "rdid":"98525", "rssi":"15", "batt":"1.35"},
{"edid":"948rcv", "rdid":"12585", "rssi":"15", "batt":"1.35"},
{"edid":"d39d38", "rdid":"12585", "rssi":"15", "batt":"1.35"},
{"edid":"f44914", "rdid":"86596", "rssi":"15", "batt":"1.35"},
{"edid":"r7vr8r", "rdid":"86596", "rssi":"15", "batt":"1.35"},
{"edid":"v8r48e", "rdid":"98525", "rssi":"15", "batt":"1.35"},
{"edid":"948rcv", "rdid":"86596", "rssi":"15", "batt":"1.35"},
{"edid":"r8v9ee", "rdid":"98525", "rssi":"15", "batt":"1.35"},
{"edid":"d39d38", "rdid":"98525", "rssi":"15", "batt":"1.35"},
{"edid":"f44914", "rdid":"12585", "rssi":"15", "batt":"1.35"},
{"edid":"r7vr8r", "rdid":"12585", "rssi":"15", "batt":"1.35"},
{"edid":"v8r48e", "rdid":"98525", "rssi":"15", "batt":"1.35"},
{"edid":"948rcv", "rdid":"12585", "rssi":"15", "batt":"1.35"},
{"edid":"r8v9ee", "rdid":"12585", "rssi":"15", "batt":"1.35"},
{"edid":"d39d38", "rdid":"98525", "rssi":"15", "batt":"1.35"},
{"edid":"f44914", "rdid":"12585", "rssi":"15", "batt":"1.35"}
]
这是我当前的输出
[
'86596', '98525', '12585',
'12585', '86596', '86596',
'98525', '86596', '98525',
'98525', '12585', '12585',
'98525', '12585', '12585',
'98525', '12585'
]
但我不想这样做,而是想做如下事情:
98525: 6
12585: 7
86596: 4
JSON文件上的数据将每10分钟刷新一次,这可能会解决
使用Map
let counter=newmap()
记录。forEach(单记录=>{
const n=parseInt(single_record.rdid)
如果(!counter.has(n)){
计数器组(n,1);
}
否则{
counter.set(n,counter.get(n)+1);
}
})
counter.forEach((值,键)=>{
console.log(键+“:”+值)
})
使用对象
让计数器={}
记录。forEach(单记录=>{
if(!counter.hasOwnProperty(single_record.rdid)){
计数器[single_record.rdid]=1;
}
否则{
计数器[单记录.rdid]+;
}
})
控制台日志(计数器)
简单获取退货数据如下:
uniqueCount = [
'86596', '98525', '12585',
'12585', '86596', '86596',
'98525', '86596', '98525',
'98525', '12585', '12585',
'98525', '12585', '12585',
'98525', '12585'
];
var count = {};
uniqueCount.forEach(function(i) {
count[i] = (count[i]||0) + 1;
});
console.log(count);
// result will be {12585: 7, 86596: 4, 98525: 6}
将允许您从循环中构造一个结果。谢谢,此数据将每10分钟刷新一次,因此计数将始终不同。知道怎么做吗?没问题,只需将数据结果存储在一个全局变量中。有没有办法将JSON文件的输出链接到“uniqueCount”而不必输入所有值?您已经在这样做了,请执行(“data.JSON”)。然后(data=>console.log(data));输出是12344123431243316541256514543,而不是12123:345362:754630:6。例如,它表示“记录”未定义。我还需要添加更多的行来让它工作吗?您应该在
const records=JSON.parse(file\u data)之后运行它代码>我必须定义“记录”吗?如果是,我该怎么做?在您的execute
函数中,records
已定义。