Мне нужно собрать уникальные значения и поместить их в другой список, чтобы избежать дублирования. Проблема в том, что я не могу использовать функции, такие как .filter(), .includes() или .push(), потому что работаю на Code.org, где есть ограничения по функциям, которые я обычно использую.
Вот что я пробовал:
function checkExistence(city) {
addToNewList(uniqueCities, allCities[0]);
for (var i = 0; i < allCities.length; i++);
if (uniqueCities[i] != city){
addToNewList(uniqueCities, allCities[i]);
}
else {
i++;
}
}
И ещё один вариант:
function populateDropdown(){
for (var i = 0; i < allCities.length; i++){
if (checkExistence(allCities[i]) == true) {
addToNewList(uniqueCities, allCities[i]);
}
else {
i++;
}
}
}
function checkExistence(city) {
for (var i = 0; i < uniqueCities.length; i++);
if (uniqueCities[i] == city){
return true;
}
}
Я пробовал и другие варианты, но они не сработали. Как можно правильно реализовать фильтрацию уникальных значений с использованием только базовых операций?
Твоя логика перепутана. Сначала проверь, есть ли элемент в массиве уникальных, потом добавляй. Делай так: берешь элемент из allCities, проходишь по uniqueCities и сравниваешь. Не совпал ни разу? Значит уникальный - добавляй. Поставь флаг found = false в начале, нашел совпадение - делай found = true. После цикла found все еще false? Добавляй элемент.
Твой код полон синтаксических ошибок. В checkExistence ты возвращаешь true только когда элемент найден - а если не найден? Функция вернет undefined. Добавь else { return false; }. Плюс логика перевернута - ты добавляешь элемент когда checkExistence возвращает true, должно быть наоборот. Зачем вообще используешь Code.org, если там нет базовых функций?
Твой код не работает из-за нескольких проблем. Главная - ты поставил точку с запятой после цикла for, поэтому код внутри просто не выполняется. Логика должна быть такой: проходишь по всем городам, для каждого проверяешь весь массив уникальных значений - есть ли там такой элемент. Если нет - добавляешь новый. Короче, нужно два вложенных цикла: внешний по всем городам, внутренний по уникальным. Если совпадений не нашел, добавляешь в список уникальных. И убери эти точки с запятой после for.