javascript - 打印包含给定单词的所有字符的列表项

标签 javascript arrays performance

输出应该只是: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/

相关文章:

c - 字符串段错误问题

c# - Entity Framework 查询缓存

javascript - React 组件中的图像加载在一个页面上而不是另一页上?

javascript - 嵌套在面板内的显示模式

javascript - 从函数中使用数据加载器时,Amchart 未显示

javascript - 如何从在 javascript 中具有相同键的对象创建对象数组

arrays - Loop Swift 不断导致应用程序崩溃

mysql - 从子查询中获取 2 个结果

java - 如何在 Java 中查找 CPU 密集型类?

javascript - 在 $(document).ready(function() {..}) 中创建 "namespace";