// data={name : 'zhangsan', age : 'lisi'}functionparseParams(data){var key, i, value, tempArr =[];for(i in data){
key =encodeURIComponent(i);
value =encodeURIComponent(data[i]);
tempArr.push(key +'='+ value);}return tempArr.join('&');}
使用两个数组实现一个定长的队列?
JS先奇数后偶数排序
// v1. 分开写的实现思路functionsortArray(arr){
arr.sort((a, b)=>{// 1. 先把奇数放在前面,把偶数放在后面if(a %2===0&& b %2===1){// 如果前面的元素是奇数的话,而且后面的元素是偶数的话,就去交换return1;}})
arr.sort((a, b)=>{// 1. 把前面的那部分奇数,和后面的那部分偶数按照从小到大的顺序排序if(a > b &&(a %2===1&& b %2===1)){return1;}if(a > b &&(a %2===0&& b %2===1)){return1;}});}// v2. 代码优化版本functionsortArray(arr){
arr.sort((a, b)=>{if(a %2===0&& b %2===1){return1;}if(a > b &&(a %2===1&& b %2===1)||(a %2===0&& b %2===1)){return1;}});}
求数组最长递增子序列长度
/**
* 求数组最长递增子序列
* @param arr
*/functiongetMaxSequenceNumbers(arr){let res =[];
res.push(arr[0])for(let i =1, len = arr.length; i < len; i++){// 开始处理resif(arr[i]> res[res.length -1]){
res.push(arr[i]);}else{// 小于等于的话// 需要在res中找到第一个大于arr[i]的元素,然后替换掉这个元素(二分查找)let index =binarySearch(res, arr[i]);if(index){
res[index]= arr[i];}}}return res.length;}functionbinarySearch(arr, val){let l =0, r = arr.length -1;while(l <= r){let mid = Math.floor(l +(r - l)/2);if(val < arr[mid]){
r = mid -1;}elseif(val > arr[mid]){
l = mid +1;}}// 最终的l就是找到的结果,arr中第一个大于val的元素位置return l;}
console.log(getMaxSequenceNumbers([5,6,7,1,2,8]));