[英]How to implement .indexof for an array of strings?
如何簡化以下代碼? 如何擺脫if語句? 我想突出顯示ajax響應中的一些行。 現在我有兩個要比較的字符串=兩個ifs。 這個數字會增加,所以我正在考慮采用其他方法-使用需要突出顯示的字符串數組,以防該字符串是data_array元素的一部分。
我只喜歡用javascript解決方案,但jQuery也可以。
data_array=data.split('<BR>');
for(var i=0, len=data_array.length; i < len; i++){
if (data_array[i].indexOf('Conflict discovered') >= 0){
data_array[i]="<span class='red'>"+data_array[i]+"</span>";
}
if (data_array[i].indexOf('Syntax error') >= 0){
data_array[i]="<span class='red'>"+data_array[i]+"</span>";
}
}
data=data_array.join('<BR>');
為什么不添加另一個for
循環?
data_array=data.split('<BR>');
var stringsToFind = ['Conflict discovered', 'Syntax error'];
for (var i = 0; i < data_array.length; i++) {
for (var j = 0; j < stringsToFind.length; j++) {
var currItem = data_array[i];
if (currItem.indexOf(stringsToFind[j]) >= 0) {
data_array[i]='<span class="red">' + currItem + '</span>';
}
}
}
data = data_array.join('<BR>');
jQuery (請注意,速度可能較慢,並且我尚未對此進行測試)
data_array=data.split('<BR>');
var stringsToFind = ['Conflict discovered', 'Syntax error'];
$.each(data_array, function(i, item) {
$.each(stringsToFind, function(j, s) {
if (item.indexOf(s) >= 0) {
data_array[i]='<span class="red">' + item + '</span>';
}
}
});
data = data_array.join('<BR>');
根據需要將更多元素添加到數組中:)
data.replace( /<br>/ig, '\n' ).replace(
new RegExp( '^(.*(?:' + [
'Conflict discovered'
, 'Syntax error'
].join( '|' ) + ').*)$', 'gm' )
, '<span class="red">$1</span>' ).replace( /\n/g, '<br>' );
說明:
<br>
標簽 ^(.*(?:Conflict discovered|Syntax error).*)$
<span class="red">
... </span>
<br>
標簽 var data_array = data.split('<BR>');
var errMsgs = ['Conflict discovered', 'Syntax error'];
data_array = data_array.map(function(data_rec) {
var isAnError = errMsgs.some(function (errMsg) {
return data_rec.indexOf(errMsg) >= 0;
});
if (isAnError) {
return "<span class='red'>" + data_rec + '</span>';
} else {
return data_rec;
}
});
var highlightWords = ['Conflict discovered', 'Syntax error', 'Simply cool'];
for(i=0; i<highlightWords.length; i++){
var regex = new RegExp(highlightWords[i],'ig');
data= data.replace( regex, '<span class="red">'+ highlightWords[i] +'</span>');
}
$('div').html( data );
var words = ['Conflict discovered', 'Syntax error', 'Strange'];
var data_array=data.split('<BR>');
for(n=0;n<words.length;n++){
for(i=0; i<data_array.length; i++){
if (data_array[i].indexOf( words[n] ) >= 0){
data_array[i]="<span class='red'>"+data_array[i]+"</span>";
}
}
data = data_array.join('<BR>');
}
$('div').html( data );
data_array=data.split('<BR>');
for(var i=0, len=data_array.length; i < len; i++){
var dai = data_array[i];
if (dai.indexOf('Conflict discovered') >= 0 || dai.indexOf('Syntax error') >= 0){
data_array[i] = "<span class='red'>"+dai+"</span>";
}
}
data=data_array.join('<BR>');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.