如何在 javascript 中将多个 if 条件减少为单个缩短条件

How to reduce multiple if conditions into a single shortened condition in javascript

本文关键字:条件 单个缩 if javascript      更新时间:2023-09-26

有多个 if 条件执行用字符串 KAP 替换字符串:

var nameList = $('#name').text();
if(nameList.indexOf('SAM') > -1){
    var newName = nameList.replace(/SAM/g, 'KAP');
    $('#name').html(newName);
}
if(nameList.indexOf('PAT') > -1){
    var newName = nameList.replace(/PAT/g, 'KAP');
    $('#name').html(newName);
}

如果我们已经在数组中存在新名称,如何使用 jquery/javascript 将上述两个压缩为单个 if 条件,如下所示

var nameArray = ['SAM','PAT','DAB'];

这样,如果在 nameList 中找到上述任何一项,则不会检查其他条件。

var nameList = $('#name').text();
var nameArray = ['SAM','PAT','DAB'];
nameArray.some(function(name) {
    if (!!~nameList.indexOf(name)) {
        nameList.replace(new RegExp(name, 'gi'), 'KAP');
        return true;
    }
    return false;
});

Array.some 方法遍历数组的元素,直到函数返回 true。查看 Mozilla 开发人员文档

!!~ 是操作数的组合,仅使 -1 为假。

最基本的我

建议:

var nameArray = ['SAM','PAT','DAB'],
    reg = new RegExp('(' + nameArray.join('|') + ')', 'i'),
if (reg.test(nameList)) {
    // one of those names was found
}
else {
    // none of those names were found
}

简化的 JS 小提琴演示。

在这里,你去:

JS小提琴:http://jsfiddle.net/2F4dG/2/

.HTML

<div id="name">Hi my name is Sam. Sam is cool.</div>

法典

$(function(){
    var nameList = $('#name').text()
    var nameArray = ['SAM','PAT','DAB'];
    //loop through all possible names
    for(var i=0;i<nameArray.length;i++){
        if(nameList.toUpperCase().indexOf(nameArray[i])!=-1){
            //new regex out of name we are replacing...
            var re = new RegExp(nameArray[i],"gi");
            //replacae all matches
            var newName = nameList.replace(re,"KAP");
            //set new name
            $('#name').html(newName);
            //exit loop we found our match...
            break;
        }
    }
});

输出

Hi my name is KAP. KAP is cool.

你不需要任何 if/else 语句 - 你可以使用正则表达式

var nameArray = ['SAM','PAT','DAB'];// your list of words
var nameList = $('#name').text();// your string to check
var reg = new RegExp(nameArray.join('|'),"g");// create the regex object - reg == /SAM|PAT|DAB/g
$('#name').html(nameList.replace(reg,'KAP'));

小提琴