好的,这是我部分工作(忽略区分大小写)比较以下内容:
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/