从逗号分隔的句子中select整个单词
我正在写一个节点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
。
在我的代码中,我能够检查,但无法得到他整个字。 请让我知道我哪里错了,我该如何解决这个问题。
谢谢
你可以试试这个:
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"); }
说明:
- 在逗号的基础上拆分数组。
- 使用数组的过滤function来过滤汽车名称。
- 如果find任何匹配的值,则长度将大于0,并且输出将被打印在控制台上。
现在,假定只有1个条目存在,因此在console.log中使用了carFound [0]。 如果在过滤function中find多个车辆,则可以轻松地将其转换为for循环。
尝试这个:
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; } } }
尝试将string分割成一个数组:
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"); } }