# 手撕代码
# 1.判断一个字符串出现最多的字符
function max_char(str){
var obj = {};
for(var i =0;i<str.length;i++){
if(!obj[str.charAt(i)]){
obj[str.charAt(i)]=1;
}else{
obj[str.charAt(i)]++;
}
}
var num = 0;
var ch ='';
for(var key in obj){
if(obj[key]>num){
ch = key;
num = obj[key];
}
}
return ch;
}
console.log(max_char('how are you?'));
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 2.解析URL,将=号分割为对象的形式
"?"号后面是参数,键值对是按"&"分隔的,键和值在"="两边
function queryString(url){
let arr = [];
let res ={};
arr=url.split("?")[1].split('&');
for(let i=0;i<arr.length;i++){
if(arr[i].indexOf("=")!=-1){
let str=arr[i].split("=");
res[str[0]]=str[1];
}else{
res[arr[i]]="";
}
}
res=JSON.stringify(res);
return res;
}
console.log(queryString('www.baidu.com?a=1&b=2&c=test&d'));
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
方法二:正则表达式
# 3.多维数组转化为一维数组
- 字符串方法
var arr = [1,[2,3],[4,5,6]];
newArr = arr.toString().split(',');
1
2
2
- 递归
var tmp = [];
function sortArr (arr) {
for(var i = 0;i<arr.length;i++){
if(arr[i] instanceof Array){
sortArr(arr[i]);
}else{
tmp.push(arr[i]);
}
}
return tmp;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 4.jQuery 实现复选框的全选和反选效果
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="box1">
<button>全选</button>
<button>不选</button>
<button>反选</button>
</div>
<div id="box2">
<ul>
<li>选项1:<input type="checkbox"></li>
<li>选项2:<input type="checkbox"></li>
<li>选项3:<input type="checkbox"></li>
<li>选项4:<input type="checkbox"></li>
<li>选项5:<input type="checkbox"></li>
<li>选项6:<input type="checkbox"></li>
<li>选项7:<input type="checkbox"></li>
<li>选项8:<input type="checkbox"></li>
<li>选项9:<input type="checkbox"></li>
</ul>
</div>
<script>
window.onload = function(){
// 获取所有的按钮
var btns = document.getElementsByTagName("button");
// 获取所有的选项input
var inputs = document.getElementsByTagName("input");
// 全选或者不选的时候 调用此函数
function fun(flag){
for (var i=0; i<inputs.length;i++) {
inputs[i].checked = flag;
}
}
//获取第一个按钮 “全选”
btns[0].onclick = function(){
fun(true);
}
// 获取第二个按钮 "不选"
btns[1].onclick = function(){
fun(false);
}
// 获取第三个按钮 “反选”
btns[2].onclick = function(){
// 遍历所有的选项,判断每一个选项是否被选中
for (var i=0;i<inputs.length;i++) {
inputs[i].checked == true ? inputs[i].checked = false : inputs[i].checked = true;
}
}
}
</script>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
jQuery实现:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" href="http://www.sucaihuo.com/jquery/css/common.css" />
<style type="text/css">
ul li{line-height:30px; padding:4px 0; font-size:14px}
</style>
</head>
<body>
<div class="container">
<h2 class="title">jQuery全选、反选与获取选中值</h2>
<div class="demo">
<ul id="list">
<li><label><input type="checkbox" value="1"> 1.老男孩</label></li>
<li><label><input type="checkbox" value="2"> 2.我最亲爱的</label></li>
<li><label><input type="checkbox" value="3"> 3.邂逅</label></li>
<li><label><input type="checkbox" value="4"> 4.心痛2013</label></li>
<li><label><input type="checkbox" value="5"> 5.要爱爱</label></li>
<li><label><input type="checkbox" value="6"> 6.怎么说我不爱你</label></li>
</ul>
<input type="checkbox" id="all"/>
<input type="button" value="全选" class="btn" id="selectAll"/>
<input type="button" value="全不选" class="btn" id="unSelect"/>
<input type="button" value="反选" class="btn" id="reverse"/>
<input type="button" value="获得选中值" class="btn" id="getValue"/>
</div>
</div>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.1.min.js"></script>
<script type="text/javascript">
$(function() {
//全选或全不选
$("#all").click(function() {
if (this.checked) {
$("#list :checkbox").attr("checked", true);
} else {
$("#list :checkbox").attr("checked", false);
}
});
//全选
$("#selectAll").click(function() {
$("#list :checkbox,#all").attr("checked", true);
});
//全不选
$("#unSelect").click(function() {
$("#list :checkbox,#all").attr("checked", false);
});
//反选
$("#reverse").click(function() {
$("#list :checkbox").each(function() {
$(this).attr("checked", !$(this).attr("checked"));
});
allCheck();
});
//设置全选复选框
$("#list :checkbox").click(function() {
allCheck();
});
//获取选中选项的值
$("#getValue").click(function() {
var valArr = new Array;
$("#list :checkbox[checked]").each(function(i) {
valArr[i] = $(this).val();
});
var vals = valArr.join(',');
alert(vals);
});
});
function allCheck() {
var num_all = $("#list :checkbox").size(); //选项总个数
var num_checked = $("#list :checkbox:checked").size(); //选中个数
if (num_all == num_checked) { //若选项总个数等于选中个数
$("#all").attr("checked", true); //全选选中
} else {
$("#all").attr("checked", false);
}
}
</script>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
jQuery checkbox的相关操作——全选、反选、获得所有选中的checkbox
# 5.实现数组去重
基本的操作:
function unique(arr){
var result =[],isRepeat;
for(var i=0,len = arr.length;i<len;i++){
isRepeat = false;
for(var j=0,len=result.length; j<len;j++){
if(arr[i] == result[j]){
isRepeat = true;
break;
}
}
if(!isRepeat){
result.push(arr[i]);
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
使用对象的方式去重:
var arr = [5,'5', 5, 2,"2",2,1,3];
function unique(arr){
var brr =[],obj={};
for(var i=0;i<arr.length; i++){
if(!obj[arr[i]]){
obj[arr[i]] = true;
brr.push(arr[i]);
}
}
return brr;
}
var result = (unique(arr));
console.log(result); //5 2 1 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 斐波那契数列
function fibonacci(n){
if(n==0 || n == 1 ) return n;
else return fibonacci(n-1) + fibonacci(n-2);
}
console.log(fibonacci(10));
1
2
3
4
5
6
7
2
3
4
5
6
7