Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Объединение [массив][массив] попарно в массив [key, value] (https://javascript.ru/forum/misc/78844-obedinenie-%5Bmassiv%5D%5Bmassiv%5D-poparno-v-massiv-%5Bkey-value%5D.html)

yozuul 12.11.2019 17:14

Объединение [массив][массив] попарно в массив [key, value]
 
Приветствую.
Получаю массивы в таком виде
[ 'file1 *** aea0f24263e5c7b9680fa16deb7e886086ba0bf1' ]
[ 'file1 *** aea0f24263e5c7b9680fa16deb7e886086ba0bf1' ]
[ 'file2 *** bc8d40d4173ca632deb8b4a696133a2d58d371a1' ]
[ 'file2 *** 88872614ff7f474d3605fed661ccd9eea1cf70b7' ]

Нужно по хешу сравнить файлы. Ничего кроме сравнения key != value не придумал, но никак не соображу, как их объединить попарно
{ 'file1 *** aea0f24263e5c7b9680fa16deb7e886086ba0bf1' : 'file1 *** aea0f24263e5c7b9680fa16deb7e886086ba0bf1' }
или так
[ 'file2 *** bc8d40d4173ca632deb8b4a696133a2d58d371a1', 'file2 *** 88872614ff7f474d3605fed661ccd9eea1cf70b7' ]

рони 12.11.2019 17:17

yozuul,
подожду переводчика.

yozuul 12.11.2019 18:22

Цитата:

Сообщение от рони (Сообщение 515422)
подожду переводчика.

рони,
В двух папках лежит по 3 файла с одинаковыми именами. Мне нужно сравнить их содержимое (одинаковые они или нет). Сраваниваю по хешу.
class computeHash {
   constructor(file) {
      this.file = file
   }
   get files () {
      let inputRead = fs.createReadStream(data.input + this.file);
      let doneRead = fs.createReadStream(data.done + this.file);

      let inputHash = crypto.createHash('sha1');
      inputHash.setEncoding('hex');
      inputRead.on('end', function() {
          inputHash.end();
          let inputHashTransfer = new CompareFilesByHash (inputHash.read() + ' *** ' + inputRead.path).hashMap
      });

      let doneHash = crypto.createHash('sha1');
      doneHash.setEncoding('hex');
      doneRead.on('end', function() {
          doneHash.end();
          let inputHashTransfer = new CompareFilesByHash (doneHash.read() + ' *** ' + inputRead.path).hashMap
      });

      doneRead.pipe(doneHash);
      inputRead.pipe(inputHash);
      return this;
   }
};

class CompareFilesByHash {
   constructor(inputHash) {
      this.inputHash = inputHash
   }
   get hashMap () {
      for (let key of [this.inputHash]) {
         console.log(key)
      }
      return this;
   }
};

console.log(key)
88872614ff7f474d3605fed661ccd9eea1cf70b7 *** C:\.work\data/input/file1
88872614ff7f474d3605fed661ccd9eea1cf70b7 *** C:\.work\data/input/file1
bc8d40d4173ca632deb8b4a696133a2d58d371a1 *** C:\.work\data/input/file2
88872614ff7f474d3605fed661ccd9eea1cf70b7 *** C:\.work\data/input/file2
aea0f24263e5c7b9680fa16deb7e886086ba0bf1 *** C:\.work\data/input/file3
88872614ff7f474d3605fed661ccd9eea1cf70b7 *** C:\.work\data/input/file3


Дальше застрял. Как их сравнить? первую строку со второй, третью с четвёртой, пятую с шестой

laimas 12.11.2019 18:37

Цитата:

Сообщение от yozuul
но никак не соображу, как их объединить попарно

Зачем, достаточно итерацию цикла увеличивать на 2, а ней сравнивать элементы текущей итерации и текущей плюс 1.

рони 12.11.2019 18:50

yozuul,
ок, помочь не могу, не понимаю структуры данных и какой результат нужен.
предполагаю что-то типа
let files = ['a','a','b','c'], arr = [...new Set(files)];
console.log(arr)

yozuul 12.11.2019 19:38

Спасибо всем, разобрался.


Часовой пояс GMT +3, время: 21:12.