Итак, у меня есть следующий код, который работает, но я бы хотел, чтобы он больше не использовал for-l oop.
Важным моментом является история "перерыва".
for (const obj of objects) {
let found = false;
for (const item of items) {
const result = item.get(obj);
if (typeof result !== 'undefined') {
found = true;
break;
}
}
if (!found) {
notDefined.push(obj);
}
}
Я пробовал это с Bluebird, но у меня не получается. Array.prototype.forEach не вариант, его нельзя остановить.
Что еще можно попробовать?
РЕДАКТИРОВАТЬ: точка заполняет этот список объектов, "notDefined" , Список представляет элементы, не найденные на карте, которые были заполнены целенаправленно.
Таким образом, куча из них проверяется на совпадение.
Если элемент действительно найден Мы должны перейти к следующей группе. И конечно: прекратите перебирать элементы, потому что мы нашли совпадение, и поэтому нет смысла продолжать. Нет необходимости постоянно проверять все оставшиеся элементы, которые могут составлять несколько сотен тысяч.
EDIT2: Цель этого списка "notDefined" - записать объекты в текстовый файл, который впоследствии можно будет проверить вручную .
Имена переменных были изменены по сравнению с их оригиналами, чтобы иметь здесь что-то другое.
Цель кода - сравнение содержимого нескольких каталогов на одном компьютере с содержимое нескольких каталогов на другом компьютере.
Эти данные представлены в виде нескольких файлов CSV. Все они читаются, и список генерируется для каждого файла CSV. Данные в этом CSV-файле:
- Абсолютный путь к файлу
- Размер файла
- Md5
И некоторые другие метаданные.
Однако этот список каждый раз не содержит просто строки абсолютного пути к файлу, он содержит Map()
, ключ - комбинация из трех упомянутых фрагментов данных, чуть выше.
Итак, у нас есть несколько CSV-файлов для машины A, а затем несколько CSV для машины B. И мы sh посмотрим, можно ли найти предметы на машине A и на машине B.
что я пытаюсь сделать здесь: l oop поверх всех CSV и найти подходящие предметы.
Если я найду совпадение, то нет смысла продолжать проверку, и я могу перейти к следующему набору. Отсюда и break;
.
Но мне нужно проверять каждое совпадение, а затем записывать результат для всех предметов, которые нигде не найдены.