Javascript 比较/筛选数组B包含A的任何子字符串的两个数组
好的,这是我部分工作的内容(忽略区分大小写),比较如下:Javascript 比较/筛选数组B包含A的任何子字符串的两个数组,javascript,typescript,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.to
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;
}
其“部分”作用于以下各项:
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;
}
findAnyMatch(arrayA,arrayB):字符串[]{
让returnArray=[];
设conditionedArrayA=arrayA.map(i=>i.toLowerCase().trim())
for(设i=0;i
它返回:“盐”,“橙”
非常高兴;问题是它在arrayA中看不到“胡椒”,因为它前面有“裂黑”
我如何让它在条件数组的每个字符串中的任何位置进行搜索
谢谢您可以使用过滤器和一些。用正则表达式
- 过滤器仅用于获取所需的值
- 一些用于检查
中的任何值是否与当前元素匹配arrayA
- 正则表达式用于匹配字符串<代码>i标志用于区分大小写
让arrayA=[“苹果”、“橙子”、“盐”、“碎黑胡椒”];
让arrayB=[“盐”、“胡椒”、“橘子”]
让find=(A,B)=>{
返回B.filter(B=>A.some(A=>newregexp(B,'i').test(A)))
}
console.log(find(arrayA,arrayB))
因为arrayB
包含“针”,而arrayA
包含“干草堆”,所以可以使用。注意您在尝试中实际使用了,这就是为什么它只匹配“salt”
(根据您的示例代码,我非常怀疑“orange”
是否匹配成功)
下面是一个使用String.prototype.includes()
的解决方案:
功能匹配子串(草堆、针){
回针。过滤器(功能(针){
const lowercasenedle=needle.toLowerCase()
返回this.some(haystack=>haystack.includes(小写字母edle))
},haystacks.map(haystack=>haystack.toLowerCase())
}
const arrayA=[“苹果”、“橙子”、“盐”、“碎黑胡椒”]
常量arrayB=[“盐”、“胡椒”、“橙”]
log(matchedsubstring(arrayA,arrayB))
您的问题标题和您身体中的问题描述不一致。“Cracked Black Pepper”不是“Pepper”的子串,但忽略大小写敏感性,“Pepper”是“Cracked Black Pepper”的子串。你的问题是“过滤两个数组,其中数组B包含A的任何子字符串”吗?好的,只是一个旁注,请确保数组不是以任何方式来自用户输入的字符串。如果是,请在将字符串传递给构造函数之前使用转义字符串,否则最终会出现漏洞。