Javascript漂流记(下)__深入数组扩展方法(二)

一、在有序的数组中找到一个指定值的索引(二分查找)vararr=[1,2,3,5,7,8,9,11,56,78,99];functionbinarySearch(arr,val)varlow=0,high=arr.length-1;while(low<=high)varmid=parseInt((low high)/2);if(val==arr[mid])returnmid;}elseif(...

一、在有序的数组中找到一个指定值的索引(二分查找)

 var arr = [1,2,3,5,7,8,9,11,56,78,99]; function binarySearch(arr, val){  var low = 0, high = arr.length - 1;  while(low <= high){var mid = parseInt((lowhigh) / 2);if(val == arr[mid]){ return mid;}else if(val > arr[mid]){ low = mid1;}else if(val < arr[mid]){ high = mid - 1;}else{ return -1;}  }  return -1; } console.log(binarySearch(arr, 11));

二、判断数组是否为对称数组

 function testSymmetry(arr){  //严谨性判断  if(arr.length == 0 || !(arr instanceof Array)){return false;}  var low = 0, high = arr.length - 1;  while(1){if(low >= high){break;}if(arr[low] != arr[high]){return false;}low  ;high--;  }  return true; }

三、查询子串首次出现的位置

 var arr = ["l", "k", "j", "h", "g", "f", "d", "s", "a", "s", "d", "f", "g", "h", "k", "j", "h", "s"]; var subArr = ['s','d','f']; function findSubArrIndex(origin, sub){  //严谨判断  if(origin.length == 0 || sub.length == 0 || !(origin instanceof Array) || !(sub instanceof Array)){return -1;  }  for(var index = 0; index <= origin.length - sub.length; index  ){//index控制子数组和原数组的哪一位开始比较for(var j = 0; j < sub.length; j  ){ if(sub[j] != origin[indexj]){break;} if(j == sub.length - 1){return index;}}  }  return -1; }

四、计算数组中最大的连续增长的子序列的长度,如[1,2,3,1,2,3,4,1,2,3,4,5,6,1]

 function getMaxSequence(arr){  if( !arr || !(arr instanceof Array) ){return 0;}  var nowMax = 1, max = 0;  for(var i = 1; i < arr.length; i  ){if(arr[i] - arr[i-1] > 0){ nowMax  ;}else{ max = nowMax > max ? nowMax : max; nowMax = 1;}  }  max = nowMax > max ? nowMax : max;  return max; }

以上内容属二哥原创,整理自 "渡一教育Javascript课程" ,一个值得推荐的"渡一教育"。

源文地址:https://www.guoxiongfei.cn/csdn/4884.html