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]);
}
}
}
沒有留言:
張貼留言