6.30.15 - 我如何使这个问题更好,更有益于其他人?反馈会有所帮助。谢谢!
我仍然是Dgrid,Dojo,Javascript的新手 - 真的全部。 在dgrid单元格中 - 有一个值'---------------- !!! - '或相同格式的变体。可能有1个感叹号或多个感叹号 - 并且有多种组合。
我需要 获取从左边开始的每个感叹号的计数。 例如 - 在上面的示例中 - 这些是项目2,3和4。我需要2,3和4才能在dgrid单元格中显示 - 而不是上面的字符串。
有没有人知道怎么做?我可以使用格式化程序 - 但是当我在字符串中有多个项目和不同的组合时,这变得很棘手。任何正确方向的建议或指导都会有所帮助。!
更新代码示例:6.16.15
只要只有一个感叹号,这个效果很好。这是多种组合。我正在快速学习javascript,所以问题的一部分是在研究答案时不确切知道如何提出正确的问题。
function XXXXInfoFormatter(item){
//console.log(item,typeof(item));
var newItem;
if ( item == '--------------------' )
newItem = 'No Faults'
else if ( item == '-------------------!' )
newItem = 'XXXX 1'
else if ( item == '------------------!-' )
newItem = 'XXXX 2'
else if ( item == '-----------------!--' )
newItem = 'XXXX 3'
else if ( item == '----------------!---' )
newItem = 'XXXX 4'
else if ( item == '---------------!----' )
newItem = 'XXXX 5'
else if ( item == '--------------!-----' )
newItem = 'XXXX 6'
else if ( item == '-------------!------' )
newItem = 'XXXX 7'
else if ( item == '------------!-------' )
newItem = 'XXXX 8'
else if ( item == '-----------!--------' )
newItem = 'XXXX 9'
else if ( item == '----------!---------' )
newItem = 'XXXX 10'
else if ( item == '---------!----------' )
newItem = 'XXXX 11'
else if ( item == '--------!-----------' )
newItem = 'XXXX 12'
else if ( item == '-------!------------' )
newItem = 'XXXX 13'
else if ( item == '------!-------------' )
newItem = 'XXXX 14'
else if ( item == '-----!--------------' )
newItem = 'XXXX 15'
else if ( item == '----!---------------' )
newItem = 'XXXX 16'
else if ( item == '---!----------------' )
newItem = 'XXXX 17'
else if ( item == '--!-----------------' )
newItem = 'XXXX 18'
else if ( item == '-!------------------' )
newItem = 'Head 19'
else if ( item == '!-------------------' )
newItem = 'XXXX 20'
else if ( item == '!!!!!!!!!!!!!!!!!!!!' )
newItem = 'All Fault'
return newItem;
}
答案 0 :(得分:1)
改变。
function XXXXInfoFormatter(item) {
var length = item.length;
var i;
var Wrongs = [];
// Scan chars from right to left.
for (i = length - 1; i >= 0; --i) {
if ('!' === item[i]) {
// If its a '!', put it id from Right to the Wrong list.
Wrongs.push(length - i);
}
}
// Check if the item is no faults or all faults.
var wlength = Wrongs.length;
if (wlength === 0) {
return 'No Faults';
} else if (wlength === length) {
return 'All Faults';
}
// Form a Result str from wrong list.
var str = 'XXXX in: ';
for (i = 0; i < wlength; ++i) {
str += ' ' + Wrongs[i] ;
}
return str;
}
希望这就是你所需要的。