// 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]));