不确定解释它的最佳方法,但是我需要用javascript搜索一个字符串,以查看该字符串的一部分是否与另一个字符串匹配。在下面的代码中,var e列出了一些状态缩写。然后,我尝试了几种不同的if语句。我尝试搜索语句而不是“ indexof”的第一条语句。那行不通。第二个if语句仅由于变量中有一个值而起作用。第三条语句不起作用,因为该变量中再次有多个值。
如果状态缩写出现在两个字符串中,则我需要运行该语句。
var e = "MT, MI, OH, DC, ";
var TFF = "MT, WY, ND, SD, NE, MN, IA, WI, KS, MO, OK, AR, LA, TX, ";
if (e.search(TFF) === -1) {
document.getElementById("test1").style.display = "block";
} else {}
if (e.indexOf("MI") >= 0) {
document.getElementById("test2").style.display = "block";
} else {}
if (e.indexOf("DC DE MD PA VA WV") >= 0) {
document.getElementById("test3").style.display = "block";
} else {}
答案 0 :(得分:0)
比较它们的最简单方法是将它们都转换为数组,然后对照另一个数组检查一个数组,在循环中运行for循环
var e = "MT, MI, OH, DC, ";
var TFF = "MT, WY, ND, SD, NE, MN, IA, WI, KS, MO, OK, AR, LA, TX, ";
var arraye = e.split(",");
var arrayTiff = TFF.split(",");
for(values in arraye){
//console.log(arraye[values])
for (value2 in arrayTiff)
{
if(arraye[values]==arrayTiff[value2])
console.log(arraye[values])
}
}
答案 1 :(得分:0)
首先将字符串分成数组,并为每个元素去除空格。然后使用filter()
函数过滤出不匹配的值:
const e = "MT, MI, OH, DC, ";
const TFF = "MT, WY, ND, SD, NE, MN, IA, WI, KS, MO, OK, AR, LA, TX, ";
let arr1 = e.split(",");
let arr2 = TFF.split(",");
arr1 = arr1.map(val => val.trim()).filter(val => val !== "");
arr2 = arr2.map(val => val.trim()).filter(val => val !== "");
const res = arr2.filter(val => arr1.includes(val));
console.log(res);
更新:
使用正则表达式:
const e = "MT, MI, OH, DC, ";
const TFF = "MT, WY, ND, SD, NE, MN, IA, WI, KS, MO, OK, AR, LA, TX, ";
const re = /[A-Z]{2}/g;
const res = TFF.match(re).filter(val => e.match(re).includes(val));
console.log(res);
答案 2 :(得分:0)
您应该将字符串转换为数组(手动或使用String#split
)。
示例:
var TFF = "MT, WY, ND, SD, NE, MN, IA, WI, KS, MO, OK, AR, LA, TX, ";
var temp = TFF.split(/,\s+/);
console.log(temp.filter(Boolean));
// or
temp.pop();
console.log(temp);
// or
console.log(JSON.parse("[\"" + TFF.replace(/,\s+/g, "\",\"").replace(/,"$/, "") + "]"));
然后检查另一个数组中是否包含任何字符串。
示例:
var e = ["MT", "MI", "OH", "DC"];
var tff = ["MT", "WY", "ND", "SD", "NE", "MN", "IA", "WI", "KS", "MO", "OK", "AR", "LA", "TX"];
var other = ["DC", "DE", "MD", "PA", "VA", " WV"];
if (e.some(x => tff.includes(x))) console.log("Test 1");
// or
if (tff.some(x => e.includes(x))) console.log("Test 1");
if (e.some(x => x === "MI")) console.log("Test 2");
// or
if (e.includes("MI")) console.log("Test 2");
if (e.some(x => other.includes(x))) console.log("Test 3");
// or
if (other.some(x => e.includes(x))) console.log("Test 3");
答案 3 :(得分:-1)
const eArr = e.split(“,”).sort();
const fttArr = ftt.stplit(“,”).sort();
let found =0;
for (let i =0; i <= eArr.lengt; ++I) {
if (eArr[i] === fttArr[i]) ++found;
}
found === eArr.length