выберите целое слово в предложении, разделенном запятыми

1

Я пишу код узла js, который имеет возвращаемое значение из моей БД и разделен запятой, и результат следующий.

const carsList = "Audi, Ford Ikon, Mercedes Benz";
var carType = "Ford";
if (carsList.toLowerCase().indexOf(carType.toLowerCase()) > -1) {
    console.log(carType + " is the car");
}

здесь я могу получить выход, поскольку Ford is the car.

Но я хочу это, как показано ниже.

Ford Ikon is the car.

простыми словами, если я говорю " Mercedes или " Benz, он должен печатать Mercedes Benz is the car. Точно так же, если я скажу Ford или Ikon, он должен напечатать Ford Ikon is the car.

В моем коде я могу проверить, но не могу получить его целое слово. сообщите мне, где я ошибаюсь и как я могу это исправить.

Спасибо

  • 1
    Создайте массив, разделив строку запятой, а затем используйте усеченные значения в этом массиве.
Теги:

3 ответа

3
Лучший ответ

вы можете попробовать следующее:

const carsList = "Audi, Ford Ikon, Mercedes Benz";
const cars = carsList.split(',');
let carType = 'Ford';
let carFound = cars.filter(car => car.includes(carType));
if (carFound.length) {
console.log(carFound[0] + " is the car");
}

Объяснение:

  1. разбиваем массив на основе запятой.
  2. используйте функцию фильтра массива для фильтрации имени автомобиля.
  3. если найдено подходящее значение, длина будет больше 0, а выход будет напечатан на консоли.

прямо сейчас, предположение состоит в том, что будет существовать только 1 запись, поэтому carFound [0] используется на console.log. это можно легко преобразовать в цикл for, если в функции фильтра есть несколько машин.

  • 0
    Также вы можете разделить запятыми и пробелами const cars = carsList.split(', '); чтобы избежать отставания в случае Ford и Mercedes.
  • 0
    это правильно, да, вы можете избавиться от лишнего пространства перед Ford и Mercedes. но в целом, я не думаю, что это будет иметь значение для этой конкретной проблемы, так как включает в себя как с пробелами и без них. хороший улов, хотя!
1

Попробуй это:

const cars = "Audi, Ford Ikon, Mercedes Benz";
var carsArray = cars.split(',');

const manufacturerName = 'Ford';
searchForCar(manufacturerName,carsArray);

const modelName = 'Ikon';
searchForCar(modelName,carsArray);

function searchForCar(needle,haystack){
  for(var i =0;i<haystack.length;i++){
    if(haystack[i].indexOf(needle) !== -1){
      console.log(haystack[i].trim() + " is the car");
      return;
    } 
  }
}
0

Попробуйте разбить строку на массив:

const cars = "Audi, Ford Ikon, Mercedes Benz";
var carsArray = cars.split(",");
var carType = "Ford";

Затем перейдите по списку, чтобы проверить, содержится ли ключевое слово в любом из элементов:

for (var make in carsArray):
    if (make.toLowerCase().includes(carType.toLowerCase())) {
        console.log(carType + " is the car");
    }   
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню