1,2,8-10
首先透過 副程式1號, 把 rangeText 放到 array 裡:
rangeText_to_array(list_string)
function rangeText_to_array(list_string){ var return_array = new Array(); if(list_string!="") { var listDataArray= new Array(); listDataArray=list_string.split(","); for (var iPos=0; iPos<listDataArray.length; iPos++ ) { var currentItem; currentItem=trim(listDataArray[iPos]); if(currentItem.indexOf("-")==-1){ return_array.push(currentItem); } else { // range var range_begin=trim(leftField(currentItem,"-")); var range_end=trim(rightField(currentItem,"-")); for(var rangeIndex=parseInt(range_begin,10); rangeIndex<=parseInt(range_end,10); rangeIndex++) { return_array.push(rangeIndex); } } } } return_array.sort(); return return_array; }
如果, 要把 array 裡的值轉成 rangeText:
function array_to_rangeText(E) { var val = ""; if (E.length) { var last_value=''; var is_queue_status=false; for (var iPos = 0; iPos < E.length; iPos++) { var my_value=E[iPos]; if(last_value!="" && my_value!=""){ if(isNextNumber(last_value,my_value)){ is_queue_status=true; } else { if(is_queue_status){ if(val != "") val += "-"; val += last_value; } is_queue_status=false; } } if(!is_queue_status){ if(val != "") val += ","; val += E[iPos]; } // 記住上一個號碼. last_value = E[iPos]; } if(is_queue_status){ if(val != "") val += "-"; val += last_value; } } return val; }
// 判斷號碼是否連續.
function isNextNumber(num1, num2){
var returnValue = false;
if(isNumeric(num1) && isNumeric(num2)){
if(parseInt(num2,10)-parseInt(num1,10)==1){
returnValue = true;
}
}
return returnValue;
}
//檢查是否為數字
function isNumeric(num) {
if(isNaN(num)){
return false;
}
return true;
}
還會需要用到2個 array function:
1. find item in array
function arrayFind(originalArray, itemToDetect) { var j = 0; while (j < originalArray.length) { if (originalArray[j] == itemToDetect) { return true; } else { j++; } } return false; }
2. remove item (string or number) from an array
function arrayRemove(originalArray, itemToRemove) { var j = 0; while (j < originalArray.length) { if (originalArray[j] == itemToRemove) { originalArray.splice(j, 1); // remove first. break; } else { j++; } } }
說明: 這裡會有, value 在 array 會不會重覆的問題, 假設不會重覆的情況下, 就只需要 remove first 即可.
array 的 append, 用 array.push 就完成了.
array 相減, 左邊是全部item, 右邊是要刪掉的item.
function array_remove_from_array(array_all, array_find){ if(array_find.length>0){ for(var iDataFind=0; iDataFind<array_find.length; iDataFind++){ arrayRemove(array_all, array_find[iDataFind]); } } }
沒有留言:
張貼留言