Найти город в строке js

281
21 сентября 2017, 18:16

Есть строки, к примеру:

var a = 'Нижний НовгородВК "Нижегородская Ярмарка" (просмотр) пав. 3';
var b = 'Санкт-ПетербургКонгрессный бизнес-центр "Петроконгресс" (просмотр)';

Есть массив с городами:

var arr = ["Санкт-Петербург", "Нижний Новгород", "Москва"]

Каким образом можно найти совпадение в строке с каким-либо элементом массива? Т.е. чтобы после определенных действий в строке a остался лишь Нижний Новгород?

Answer 1

Далеко не идеальный вариант, но как рабочая идея. Надеюсь, я правильно понял Вашу проблему.

var a = 'Нижний НовгородВК "Нижегородская Ярмарка" (просмотр) пав. 3'; 
var b = 'Санкт-ПетербургКонгрессный бизнес-центр "Петроконгресс" (просмотр)'; 
var mas = [a, b];   // массив строк 
 
var arr = ["Санкт-Петербург", "Нижний Новгород", "Москва"]; 
for (var j = 0; j < mas.length; j++) {  // проход по каждой строке 
    for (var i = 0; i < (arr.length); i++) {  // проход по каждому городу 
        var string = mas[j]; 
        var x = string.indexOf(arr[i]); 
        if (x > -1) { 
            mas[j] = arr[i]; // если город есть в строке, то он становится этой строкой 
        } 
    } 
} 
 
alert(mas);

Answer 2

Самый "примитивный" способ, попробуйте. Единственное, Вы должны быть уверены, что в массивах не будет опечаток. Например, Москва и москва будут не равны. В этом случае нужно будет привести все в один регистр.

var arrOfStrings = ['Нижний НовгородВК "Нижегородская Ярмарка" (просмотр) пав. 3', 'Санкт-ПетербургКонгрессный бизнес-центр "Петроконгресс" (просмотр)']; 
var arrOfCities = ["Санкт-Петербург", "Нижний Новгород", "Москва"]; 
 
for(let i = 0; i < arrOfStrings.length; i++){ 
	for(let k = 0; k < arrOfCities.length; k++){ 
    //если есть совпадение, перезаписываем элемент в массиве строк 
		if(arrOfStrings[i].indexOf(arrOfCities[k]) >= 0) { 
			arrOfStrings[i] = arrOfCities[k]; 
		} 
	} 
}

READ ALSO
Аргументы стрелочной функции

Аргументы стрелочной функции

Доброго времени суток

319
Последовательные вопросы в Telegram bot на Node.js

Последовательные вопросы в Telegram bot на Node.js

Доброго времени суток, есть желание сделать небольшой опросник в Telegram ботеИдея такя, бот задает вопрос, пользователь отвечает и бот задает...

461
Как сделать данный слайдер адаптивным?

Как сделать данный слайдер адаптивным?

Мучаюсь уже третий день с вот этим слайдером:

274
Проверка переменной оператором javascript

Проверка переменной оператором javascript

Условия соблюдены, но срабатывает elseПочему?

361