一、在有序的数组中找到一个指定值的索引(二分查找)
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((low +
high) / 2); if(val == arr[mid]){ return mid; }else if(val > arr[mid]){ low =
mid + 1; }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[index + j]){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课程" ,一个值得推荐的"渡一教育"。

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信