nodejs writeFile返回重复项

时间:2016-10-06 18:19:26

标签: node.js

我编写了以下nodejs脚本(sortLabels.js),它适用于labelsFilePath的文件,该文件包含对象,但它不适用于{{1}的文件这是一个字符串数组。我基本上尝试对两个文件进行排序,然后使用新排序的值覆盖这些文件的内容。出于某种原因,在labelIds文件中,我得到了重复项。

labelIdsFilePath

在运行脚本(let labelsFilePath = './server/mocks/label.json'; let labels = require(labelsFilePath); let labelIdsFilePath = './client/app/common/config/label-ids.json'; let labelIds = require(labelIdsFilePath); const _ = require('lodash'); let fs = require('fs'); labels = _.sortBy(labels, "id"); labelIds = _.sortBy(labelIds, (num) => num); fs.writeFile(labelsFilePath, JSON.stringify(labels), function(err){ if(err) console.log(err); else { console.log('labels were sorted'); } }) fs.writeFile(labelIdsFilePath, JSON.stringify(labelIds), function(err){ if(err) console.log(err); else { console.log('labels ids were sorted'); } }) )之前,这就是labelIds的样子:

node sortLabels

之后:

 [
  "0083",
  "0117",
  "0021",...]

我做错了什么/失踪了?

1 个答案:

答案 0 :(得分:1)

由于执行的结果是labelIdsFilePath中格式良好的JSON对象,似乎一切正常。

也许原始数字集包含重复数据并对它们进行排序会使事实变得更加透明?

尝试在对数组进行排序之前和之后打印出数组的长度。这应该向你展示它的大小不会翻倍,你只是看到那里的重复。

console.log(labelIds.length)

如果你真的不需要重复项,

labelIds = _.uniq(labelIds)

然后保存。