У меня возникла проблема, из-за которой я должен был построить функцию _.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;
};