Как я могу упростить код в моей функции _uniq? - PullRequest
0 голосов
/ 04 мая 2020

У меня возникла проблема, из-за которой я должен был построить функцию _.uniq из библиотеки подчеркивания. Я смог заставить его пройти все тесты, но я знаю, что сделал это очень замысловато, и я думаю, что есть кое-что фундаментальное, что мне не хватает в том, как функция работает вместе с предоставленной функцией итератора. Когда я говорил с ТА из программы, которую я посещаю, он сказал, что пока мой мыслительный процесс будет работать, есть более простой способ сделать это. Хотя я могу думать только о том, чтобы сохранить результаты итератора в отдельном массиве, отсортировать уникальные элементы в объекте, затем поместить эти элементы в другой массив и вернуть этот массив. Может ли кто-нибудь помочь мне упростить мой код?

_.uniq = function(array, isSorted, iterator) {
    var uniqueArray = [];
    var storeObj = {};
    var iteratorArray = [];

    _.each(array, function(item, index) {
      if (iterator) {
        iteratorArray.push(iterator(item));
      } else {
        iteratorArray.push(_.identity(item));
      }
    });

    _.each(iteratorArray, function(item, index) {
      if (storeObj[item] === undefined) {
        storeObj[item] = array[index];
      }
    });

    for(var key in storeObj) {
      uniqueArray.push(storeObj[key]);
    }

    return uniqueArray;
  };
...