2016-10-06 3 views
0

Я написал следующий скрипт nodejs (sortLabels.js), и он отлично работает для файла на labelsFilePath, который содержит объект, но он не работает для файла по адресу labelIdsFilePath, который представляет собой массив строки. Я в основном пытаюсь сортировать оба файла, а затем перезаписывать содержимое этих файлов с новыми отсортированными значениями. По какой-то причине в файле labelIds я получаю дубликаты.nodejs writeFile возвращающие дубликаты

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'); 
    } 
}) 

перед запуском сценария (node sortLabels), это то, что LabelIds выглядеть так:

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

и после:

["0012","0012","0021","0021"....] 

, что я делаю неправильно/не хватает?

ответ

1

Поскольку результат выполнения является хорошо сформированным объектом JSON в labelIdsFilePath, кажется, что все работает правильно.

Возможно, исходный набор чисел включает в себя дубликаты и их сортировку делает этот факт более прозрачным?

Попробуйте распечатать длину массива до и после его сортировки. Это должно продемонстрировать вам, что он не удваивает размер, вы просто видите дубликаты, которые есть.

console.log(labelIds.length)

Если вы действительно не нужны дубликаты,

labelIds = _.uniq(labelIds)

, а затем сохранить его.

+0

Да, я сделал это, длина была такой же до и после ... хорошая точка, хотя, проверит это. – devdropper87

+0

ты действительно был прав, спасибо – devdropper87

Смежные вопросы