Возврат нового массива, содержащего строки, которые содержат определенные слова - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь взять массив и вернуть новый массив, содержащий только те, чья фамилия - «Смит».

Я пытаюсь отфильтровать это и пытался довольно долго, но у меня совершенно нет идей.

Пожалуйста, посмотрите на мой код ниже, я знаю, что я далеко, и дайте мне знать, где я могу получить лучшие результаты?Спасибо, ребята!

const smiths = arr.filter(function(smith) {
  let nameSplit = smith.split(' ')
  return nameSplit === "Smith" 
 });                               
return smiths;

Пример:

arr = ['Penelope Smith', 'Charlotte Smither'] returns ['Penelope Smith']

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Вы можете сделать что-то подобное, используя localeCompare, чтобы позаботиться о чувствительности к регистру и т. Д .:

var arr = ['Penelope Smith', 'Charlotte Smither', 'John smith']

const smiths = (a, s) => a.filter(x => x.split(' ')[1]
   .localeCompare(s, 'en', {sensitivity: 'base'})==0)

console.log(smiths(arr, 'Smith'))

Другой подход, который вы можете использовать, это endsWith и toLowerCase:

var arr = ['Penelope Smith', 'Charlotte Smither', 'John smith', 'Mark DeSmith']

const smiths = (a,s) => a.filter(x => 
   x.toLowerCase().endsWith(` ${s.toLowerCase()}`))

console.log(smiths(arr, 'Smith'))

Обратите внимание, что endsWith не имеет поддержки в IE

0 голосов
/ 09 октября 2018

@ slouisa у вас это почти получилось, вы просто пропустили индекс для массива разбиения.

const lastNameToFilter = "smith";
const smiths = arr.

arr = ['Penelope Smith', 'Charlotte Smither'];

const lastNameToFilter = "Smith".toLowerCase();

const smiths = arr.filter(function(fullname) {
    let nameSplit = fullname.split(' ');
    let lastNameIndex = 1;

    return nameSplit[lastNameIndex].toLowerCase() === lastNameToFilter;
});                

console.log(smiths);
               
filter(function(smith) {
    let nameSplit = smith.split(' ');
    let lastNameIndex= 1;
    return nameSplit[lastNameIndex].toLowerCase() === lastNameToFilter;
});                               
return smiths;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...