2017-01-17 2 views
0

Мне нужно проверить каждый элемент массива на определенную букву. если элемент содержит эту букву, он должен оставаться внутри массива, если он не должен быть удален.Возвращаемые элементы, содержащие только определенные символы

В настоящее время я могу удалить элементы, если они точны, но не уверен, как проверять каждый индекс каждого элемента.

var exampleList = ['alpha', 'beta','dog'] 

exampleList.filter(function(word) { 
    return (word == 'dog'); 
}) 

моей конечной целью было бы что-то вроде этого.

letterToInclude = 'a' 
var exampleList = ['alpha', 'beta','dog', 'mouse'] 

exampleList.filter(function(word) { 
    return (word == letterToInclude); 
}) 
// returned values = ['alpha', 'beta'] 
+1

'list.filter (слово => word.includes (письма))' –

+0

я люблю '[ 'альфа ',' beta ',' dog ']. filter (/./. test, RegExp ("a")) ;, но вы можете вручную выписать функции вручную; многие люди не понимают универсальной утилизации ... – dandavis

ответ

3

Вместо того чтобы делать ==, вы можете использовать indexOf, чтобы увидеть, если letterToInclude происходит в word.

letterToInclude = 'a' 
var exampleList = ['alpha', 'beta','dog', 'mouse'] 

exampleList.filter(function(word) { 
    return (word.indexOf(letterToInclude) > -1); 
}); 

indexOf возвращает позицию, что происходит в letterToIncludeword; в случае, если он не найден, indexOf вернется -1.

Причина, по которой я не использовал word.includes(letterToInclude), предназначен только для целей совместимости. includes довольно новый и isn't completely supported.

+0

спасибо за помощь, я, должно быть, неправильно использовал indexOf до этого. – Pyreal

+0

Сопоставлял бы массив слов для включения в него? – Pyreal

+1

Хороший ответ на этот вопрос можно найти здесь: http://stackoverflow.com/questions/11076067/finding-matches-between-multiple-javascript-arrays – Santi

0

Попробуйте использовать indexOf:

letterToInclude = 'a' 
 
var exampleList = ['alpha', 'beta','dog', 'mouse'] 
 

 
console.log(exampleList.filter(function(word) { 
 
    return ~(word.indexOf(letterToInclude)); 
 
}));

+0

спасибо за ввод. – Pyreal

1

Вы можете использовать indexOf(), чтобы проверить, если каждый элемент содержит конкретное письмо.

var letterToInclude = 'a' 
 
var exampleList = ['alpha', 'beta', 'dog', 'mouse'] 
 

 
exampleList = exampleList.filter(function(word) { 
 
    return word.indexOf(letterToInclude) != -1 
 
}) 
 

 
console.log(exampleList)

ES6 решение с String#includes(), также вы можете использовать match() или test(), но те, принимать регулярные выражения.

exampleList.filter(word => word.includes(letterToInclude)) 
+0

спасибо за ввод. – Pyreal

0

Он хорошо работает вместе с символов Unicode:

var lettersToInclude = 'aa' 
 
var exampleList = ['a', 'aa','❤✓☀a★bAb', 'bbaa', 'aa☂'] 
 

 
var r = exampleList.filter(function(word) { 
 
    return (word.indexOf(lettersToInclude) > -1); 
 
}); 
 

 
console.log(r);

Смежные вопросы