我需要检查数组的每个元素是否有某个字母。如果元素包含这个字母,它应该保留在数组中,如果不包含它应该被删除。
目前我能够删除元素,如果它们是准确的,但不知道如何检查每个元素的每个索引。
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']
答案 0 :(得分:3)
您可以使用==
查看indexOf
中是否letterToInclude
,而不是word
。{/ p>
letterToInclude = 'a'
var exampleList = ['alpha', 'beta','dog', 'mouse']
exampleList.filter(function(word) {
return (word.indexOf(letterToInclude) > -1);
});
indexOf
返回letterToInclude
中出现word
的位置;如果找不到,indexOf
将返回-1
。
我没有使用word.includes(letterToInclude)
的原因仅用于兼容性目的。 includes
相当新,isn't completely supported。
答案 1 :(得分:1)
您可以使用indexOf()
检查每个元素是否包含特定字母。
var letterToInclude = 'a'
var exampleList = ['alpha', 'beta', 'dog', 'mouse']
exampleList = exampleList.filter(function(word) {
return word.indexOf(letterToInclude) != -1
})
console.log(exampleList)

使用String#includes()
的ES6解决方案,您也可以使用match()
或test()
,但这些解决方案采用正则表达式。
exampleList.filter(word => word.includes(letterToInclude))
答案 2 :(得分:0)
尝试使用indexOf
:
letterToInclude = 'a'
var exampleList = ['alpha', 'beta','dog', 'mouse']
console.log(exampleList.filter(function(word) {
return ~(word.indexOf(letterToInclude));
}));

答案 3 :(得分: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);