首页 > 解决方案 > 我有一个唯一 id 列表,我想在其中为每个 id 数据实现一个计数器,每 10 分钟刷新一次

问题描述

数据将每 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 分钟刷新一次

标签: javascriptnode.jsarraysjson

解决方案


简单地将您的返回数据获取为:


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}


推荐阅读