Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我有一个唯一的id列表,我想在其中为每个id实现一个计数器,每个id数据将每10分钟刷新一次_Javascript_Node.js_Arrays_Json - Fatal编程技术网

Javascript 我有一个唯一的id列表,我想在其中为每个id实现一个计数器,每个id数据将每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

数据将每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 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
已定义。