LINUX.ORG.RU

История изменений

Исправление theNamelessOne, (текущая версия) :

  1. Читать один и тот же файл в цикле — плохо.
  2. Документацию к функциям (например, к JSON.parse) читать — хорошо.
var fs = require('fs');

var data = function(dataFile, mapFile, done) {
  fs.readFile(dataFile, function(err, dataString) {
    if(err) return done(err);

    var evaluated = eval(dataString+";data");

    // transform data for convenience
    var data = evaluated.reduce(function (data, item) {
      data[item.key] = item.val;
      return data;
    }, {});

    fs.readFile(mapFile, function (err, mapString) {
      if (err) return done(err);

      var map = JSON.parse(mapString, function (key, value) {
          if (value in data) return data[value];
          return value;
      });

      return done(null, map);
    });
  });
};

data('data.json', 'map.json', function (err, map) {
  if (err) throw err;

  console.log(map);
});

Исходная версия theNamelessOne, :

  1. Читать один и тот же файл в цикле — плохо.
  2. Документацию к функциям (например, к JSON.parse читать — хорошо.
var fs = require('fs');

var data = function(dataFile, mapFile, done) {
  fs.readFile(dataFile, function(err, dataString) {
    if(err) return done(err);

    var evaluated = eval(dataString+";data");

    // transform data for convenience
    var data = evaluated.reduce(function (data, item) {
      data[item.key] = item.val;
      return data;
    }, {});

    fs.readFile(mapFile, function (err, mapString) {
      if (err) return done(err);

      var map = JSON.parse(mapString, function (key, value) {
          if (value in data) return data[value];
          return value;
      });

      return done(null, map);
    });
  });
};

data('data.json', 'map.json', function (err, map) {
  if (err) throw err;

  console.log(map);
});