如何在 javascript 中将多个 if 条件减少为单个缩短条件
How to reduce multiple if conditions into a single shortened condition in javascript
有多个 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'));
小提琴
相关文章:
- 如何将焦点集中在除某些条件外的单个文本框上
- 如何在单个条件下检测键码和单击事件
- 如何在 javascript 中将多个 if 条件减少为单个缩短条件
- 单个正则表达式,用于获取具有多个条件的多个模式
- 如何在单个“if”语句中压缩多个“indexOf”条件
- 具有单个输入和多种条件的角度滤波器
- 画廊 具有单个幻灯片容器的多个缩略图库
- Oracle APEX - 如何在打印时缩放区域以适应单个页面
- fit=“true” + 单个标记 => 缩放太大,角度谷歌地图,角度js
- 使用换行符和缩进重新格式化单个运行行
- 缩放要打印在单个页面上的网站
- 带有单个管道的Javascript条件语句“|&”;
- Jquery Validator-对单个字段进行条件验证
- 如何使用jQuery/Javascript缩放单个SVG元素
- 使用谷歌地图 API V3 的单个标记使用 Where 条件显示数据库中的单个标记
- 如何使IntelliJ缩进包装条件在JavaScript if语句
- 如何为bing地图上的单个位置设置缩放级别
- 目标条件语句jQuery中提到的单个元素
- 在单个条件下检查滚动顶部和 id 偏移量
- D3:如何处理单个图表中的缩放和工具提示