输出应该只是:rabbit 和 bibe,但我弄错了,列表中的所有内容都在打印,因为最后一个索引也有“b”,以及如何打印仅包含“bib”的指定元素
let str = 'bib'
let list = ['rabbit', 'bibe', 'bundle']
for (let i = 0; i < list.length; i++) {
for (let j = 0; j < list[i].length; j++) {
let foundIndex = str.indexOf(list[i][j]) > -1
if (foundIndex === -1) {
list.splice(foundIndex, 1)
} else if (foundIndex) {
console.log(list[i])
}
}
}
预期输出应该是:
rabbit
bibe
最佳答案
这是另一种解决方案,如果我们对字母“bib”进行排序,则变为“bbi”。
如果我们对列表 ["rabbit","bibe","bundle"] 执行类似的操作,则变为 ["abbirt", "bbei"和 "bdelnu"]。如果我们过滤不在“bib”中的字母,列表将缩小为[“bbi”,“bbi”,“b”]。我们现在可以做的是检查结果列表中是否出现“bbi”。
这是上述内容的中间实现:
let str = 'bib';
let list = ['rabbit','bibe','bundle'];
let str2 = [...str].sort().join('');
let result =list.filter( function (w) {
let w2 = [...w].filter( c => str.indexOf(c) !== -1 ).sort().join('');
return w2.indexOf(str2) !== -1;
} );
console.log(JSON.stringify(result));
这里是相同的代码,但更多的是:
let str = 'bib';
let list = ['rabbit','bibe','bundle'];
let result = list.filter( w => [...w].filter( c => str.indexOf(c) !== -1 ).sort().join('').indexOf([...str].sort().join('')) !== -1);
console.log(JSON.stringify(result));
关于javascript - 打印包含给定单词的所有字符的列表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75915426/