目录
1、将 "hqyj-is-good" 字符串 转为: "hqyjIsGood"
9、判断自循环重复次数或者是否存在 (是否存在:indexOf和match两种方法)
10、编写一段程序代码,获取今天的日期,格式如“2021-01-01”;并计算下一周同一天的日期。
16、封装一个方法,实现原生JS兼容各类浏览器的元素事件绑定?
25、输入一行字符串,由英文字母、数字、和空格组成,并以换行符结尾,其中大写字母、小写字母、数字和空格出现的次数、并依次输出
26、给定N个整数,请你依次输出第一大的数与第一小的数之和,第二大的数与第二小的数之和,第三大的数与第三小的数之和(如果N为奇数,中位数不必输出)
1、将 "hqyj-is-good" 字符串 转为: "hqyjIsGood"
//方法一:
var str = "hqyj-is-good"
var arr = str.split("-")
re = arr[0] + arr[1][0].toUpperCase() + arr[1][1] + arr[2][0].toUpperCase() + arr[2][1] + arr[2][2] + arr[2][3]
console.log(re)
//方法二
var str = "hqyj-is-good"
String.prototype.myparse = function (str) {
var arrStr = str.split('-')
for (var i = 1; i < arrStr.length; i++) {
arrStr[i] = arrStr[i].substr(0, 1).toUpperCase() + arrStr[i].substr(1)
}
return arrStr.join("")
}
var str2 = str.myparse(str)
console.log(str2)
//方法三:
String.prototype.myparse = function (str) {
var arr = this.split("-")
var arr2 = arr[1].split("")
var re = arr2[0].toUpperCase()
for (var i = 1; i < arr2.length; i++) {
re += arr2[i]
}
var arr3 = arr[2].split("")
var rel = arr3[0].toUpperCase()
for (var j = 1; j < arr3.length; j++) {
rel += arr3[j]
}
var arr4 = arr[0].concat(re, rel)
return arr4
}
var str = "hqyj-is-good"
var str2 = str.myparse()
console.log(str2)
//方法四:
var str = "hqyj-is-good"
function myparse(str) {
var arrStr = str.split('-')
for (var i = 1; i < arrStr.length; i++) {
arrStr[i] = arrStr[i].substr(0, 1).toUpperCase() + arrStr[i].substr(1)
}
return arrStr.join("")
}
console.log(myparse(str))
2、找出数组中最大的元素
//方法一:
var arr = [10, 4, 2, 5, 30, 1]
var maxnum = Math.max.apply(0, arr)
console.log(maxnum)
//方法二:js中的sort()方法
var arr = [10, 4, 2, 5, 30, 1]
var re = arr.sort(function (a, b) {
return b - a
})
console.log(re[0])
//方法三:
Array.prototype.mymax = function () {
this.sort(function (a, b) {
return b - a
})
return this[0]
}
var arr = [10, 2, 3, 5, 30, 1]
var re = arr.mymax()
console.log(re)
//方法四
var arr = [10, 4, 2, 5, 30, 1]
var max3 = -Infinity;
for (var i = 0; i < arr.length; i++) {
if (max3 < arr[i]) {
max3 = arr[i];
}
}
console.log(max3)
//方法五:
Array.prototype.mymax = function(arr) {
for (var i=0;i<this.length;i++) {
var a=this[i]
var b = this[i+1]
var arr2=this.sort(function(a,b) {
var rel = b-a
return rel
})
}
return arr2[0]
}
var arr=[10,2,3,5,30,1]
var re=arr.mymax()
console.log(re)
//方法六
var arr=[1,2,3]
var arrMax=Math.max(...arr)
console.log(arrMax)
//方法七: 选择排序`
var arr = [123,203,23,13,34,65,65,45,89,13,1];
for(var i=0;i<arr.length;i++){
for(var j=i+1;j<arr.length;j++){
//如果第一个比第二个大,就交换他们两个位置
if(arr[i]>arr[j]){
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
console.log(arr); //(11) [1, 13, 13, 23, 34, 45, 65, 65, 89, 123, 203]
//方法八: 冒泡排序`
var arr = [123,203,23,13,34,65,65,45,89,13,1];
for(var i=0; i<arr.length-1; i++){
//每一轮比较要比多少次
for(var j=0; j<arr.length-1-i; j++){
//如果第一个比第二个大,就交换他们两个位置
if(arr[j]>arr[j+1]){
var temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
console.log(arr); //(11) [1, 13, 13, 23, 34, 45, 65, 65, 89, 123, 203]
//方法九: 插入排序`
var arr = [123,203,23,13,34,65,65,45,89,13,1];
var preIndex, current;
for(var i=1;i<arr.length;i++){
preIndex = i-1;
current = arr[i];
while(preIndex>=0 && arr[preIndex]>current) {
arr[preIndex+1] = arr[preIndex];
preIndex--;
}
arr[preIndex+1] = current;
}
console.log(arr); //(11) [1, 13, 13, 23, 34, 45, 65, 65, 89, 123, 203]
//方法十: 快速排序`
var arr = [123,203,23,13,34,65,65,45,89,13,1];
//创建快速排序函数
function quickSort(tempArr){
//递归终止条件
if(tempArr.length<=1){
return tempArr;
};
//取基准
var pivotIndex = Math.floor(tempArr.length/2);
var pivot = tempArr.splice(pivotIndex,1);
//分左右
var leftArr = [];
var rightArr = [];
for(var i=0;i<tempArr.length;i++){
if(tempArr[i]>pivot){
rightArr.push(tempArr[i]);
}else{
leftArr.push(tempArr[i]);
};
};
return quickSort(leftArr).concat(pivot,quickSort(rightArr));
};
console.log(quickSort(arr)); //(11) [1, 13, 13, 23, 34, 45, 65, 65, 89, 123, 203]
3、随便传入一个字符串 找出重复的次数,并返回下标
//方法一
String.prototype.count1 = function (str) { //方法一
var re = -1;
var count = 0
var arr = []
do {
re = this.indexOf(str, re + 1)
if (re != -1) {
count++, arr.push(re)
}
} while (re != -1)
return (count, arr)
}
var str = "abcdqwaeab"
var re = str.count1("ab")
console.log(re)
//方法二
var str = 'abcabca';
var arr = [];
var n = 0;
while (str.indexOf('ab', n) != -1 && n < str.length) {
arr.push(str.indexOf('ab', n));
n = str.indexOf('ab', n) + 2;
}
var repeatCount = arr.length
var repeatIndex = arr
console.log(repeatCount, repeatIndex);
//方法三
String.prototype.repeatCount = function (a) {
var count = 0
var index = this.indexOf(a)
while (index != -1) {
index = this.indexOf(a, index + 1)
count++
}
return count
}
var str = "abcdqwaeab"
var re = str.repeatCount("ab")
console.log(re)
4、去掉头尾和全部的空格
//方法一:去除两端空格
var str = " he llo ";
console.log(str.trim()); //hello
//方法二:去除所有空格 !!!!
console.log(str.replace(/\s*/g, "")); //hello
//方法三:去除两端空格
String.prototype.mytrim = function () {
var a = /\s+/
var str = this.replace(a, "")
var b = /\s+$/
var str = str.replace(b, "")
return str
}
var str = " hello "
var re = str.mytrim()
console.log(re)
//方法四:去除两端空格
String.prototype.mytrim = function (str) {
var arr = this.split(" ")
for (var i = 0; i < arr.length; i++) {
if (arr[i] != "") {
return arr[i]
}
}
}
var str = " hel lo "
var re = str.mytrim()
console.log(re)
//`方法五:(强烈推荐)全部去除`
var str = ' abc d e f g ';
function trimAll(ele) {
if (typeof ele === 'string') {
return ele.split(' ').join('');
} else {
console.error(`${typeof ele} is not the expected type, but the string type is expected`)
}
}
console.log(trimAll(str))//abcdefg
//方法六:指定位置清楚空格(第二个参数控制位置)`
function deleSpac(str, direction) { // 1 串的模板 2 清除哪边空格
if (typeof str !== 'string') { // 限制下条件,必须是字符串