首页 > 解决方案 > Javascript:从头到尾匹配两个字符串之间的字符

问题描述

我想检查给定的数字条目是否与给定的结果编号匹配。例子:

var result = "8842";

var entry1 = "43";
var entry2 = "042";
var entry3 = "0842";
var entry4 = "842";
var entry5 = "42";
var entry6 = "8842";

entry4、entry5 和 entry6 应该返回 true,表明它是一个获胜组合。换句话说,无论条目的字符串长度如何,条目中的所有字符都必须从头到尾或从​​右到左匹配结果变量中的字符。我知道我们可以像这样使用 for 循环开始:

var winning = "8821".split("");
var entry1 = "23".split("");
var entry2 = "123".split("");
var entry3 = "55".split("");
var entry4 = "8888".split("");
var entry5 = "21".split("");
var counter1, counter2, counter3, counter4, counter5;
counter1 = 3;
counter2 = 3;
counter3 = 3;
counter4 = 3;
counter5 = 3;
for(var i = entry1.length - 1; i >= 0; i--){
    console.log("Entry 1: " + winning[counter1] + " === " + entry1[i] + " : " + (winning[counter1] === entry1[i]));
    counter1 -= 1
}

for(var i = entry2.length - 1; i >= 0; i--){
    console.log("Entry 2: " + winning[counter2] + " === " + entry2[i] + " : " + (winning[counter2] === entry2[i]));
    counter2 -= 1
}

for(var i = entry3.length - 1; i >= 0; i--){
    console.log("Entry 3: " + winning[counter3] + " === " + entry3[i] + " : " + (winning[counter3] === entry3[i]));
    counter3 -= 1
}

for(var i = entry4.length - 1; i >= 0; i--){
    console.log("Entry 4: " + winning[counter4] + " === " + entry4[i] + " : " + (winning[counter4] === entry4[i]));
    counter4 -= 1
}

for(var i = entry5.length - 1; i >= 0; i--){
    console.log("Entry 5: " + winning[counter5] + " === " + entry5[i] + " : " + (winning[counter5] === entry5[i]));
    counter5 -= 1
}

但是我想知道是否有更高效或更短的版本使用 JS 可以为这种情况提供的现有方法?就像使用正则表达式一样。TIA。

标签: javascript

解决方案


你可以使用String.prototype.endsWith()方法来得到你的结果。EndsWith 方法确定字符串是否以指定字符串的字符结尾,并基于此返回 true 或 false。

const result = '8842';

const entry1 = '43';
const entry2 = '042';
const entry3 = '0842';
const entry4 = '842';
const entry5 = '42';
const entry6 = '8842';

const a = [entry1, entry2, entry3, entry4, entry5, entry6];
a.forEach((x) => console.log(result.endsWith(x)));


推荐阅读