javascript - 比较/过滤两个数组,其中数组 B 包含 A 的任何子字符串

标签 javascript typescript

好的,这是我部分工作(忽略区分大小写)比较以下内容:

arrayA = ["apples", "Oranges", "salt", "Cracked Black Pepper"];
arrayB = ["salt", "pepper", "orange"]

“部分”适用于以下内容:

findAnyMatch(arrayA, arrayB): string[] {
    let returnArray = [];
    let conditionedArrayA = arrayA.map(i => i.toLowerCase().trim())
    for (let i = 0; i < arrayB.length; i++) {
      if (conditionedArrayA .includes(arrayB[i].toLowerCase().trim())) {
        ret.push(arrayB[i].toLowerCase().trim());
      }
    }
    return returnArray;
  }

很高兴地返回:"salt", "orange";问题是它在 arrayA 中看不到“胡椒”,因为它前面有“黑色裂纹”。

我如何让它在条件数组 A 的每个字符串内的任何位置进行搜索?

谢谢

最佳答案

你可以使用过滤器和一些。用正则表达式

  • 过滤器用于仅获取所需的值。
  • Some 用于检查 arrayA 中的任何值是否与当前元素匹配。
  • 正则表达式用于匹配字符串。 i 标志用于不区分大小写。

let arrayA = ["apples", "Oranges", "salt", "Cracked Black Pepper"];
let arrayB = ["salt", "pepper", "orange"]

let find = (A,B) => {
  return B.filter(b=> A.some(a=> new RegExp(b,'i').test(a)))
}

console.log(find(arrayA,arrayB))

关于javascript - 比较/过滤两个数组,其中数组 B 包含 A 的任何子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55168464/

相关文章:

javascript - 我应该如何断言 Cypress 中的复选框已选中?

javascript - 了解 hashchange 事件的发起者

javascript - React.js fadeIn + 渲染每个元素的延迟

JavaScript 不改变显示 css 值

javascript - JavaScript 中的 Cross &lt;script&gt; block 中哪些实体是可见的?

angular - Internet Explorer 11,ECMAScript 对象属性分配问题

javascript - 将多维输入数组转换为 JSON

javascript - Typescript 二维数组定义抛出错误

angular - Typescript 错误 - ComponentRef 上的 TS2339

typescript - 如何使类的泛型是必需的?