递归:
函数自身调用自身就形成了递归
程序调用自身的编程技巧称为递归
调用的时候一定需要某个而条件让递归调用停止翻转数组:
reverse()
对数组进行排序
sort()--- 比较的是两个字符串中每一个字符编码
参数:
函数
拿到数组中的两个值
如果前一个值大于后一个值, 不交换位置
如果前一个值小于后一个值, 交换位置
会改变原数组
arr.sort(function (a,b){
// 每一次这个回调函数会拿到两个值
b-a
后一个值减去前一个值
如果是正数, 说明后一个值大于前一个值, 交换位置
如果是负数, 说明后一个值小于前一个值, no 交换位置
如果是 0, 说明后一个值等于前一个值, no 交换位置
})
内置对象 Math
这个对象下的方法处理数值相关的, 处理三角函数
转成整数:
1. 忽略小数点 parseInt()
2. 向上取整 大于这个小数最近的整数 Math.ceil()
3. 向下取整 小于这个小数最近的整数 Math.floor()
4. 四舍五入 Math.round()
随机数:
Math.random()
范围在 0 - 1 之间 不包含 1 的
0 - 0.9999999999
要的是 x - y 之间的随机数
Math.random() * (y-x) + x;
遍历数组
arr.forEach(function(item,index){})
返回值是 undefined
arr.map(function(item,index){})
map 的返回值是一个数组, 数组的个数和原数组相同
arr.filter(function(item,index){})
过滤
filter 是做过滤用的, 过滤的时候需要有一个条件, 如果条件成立, 就把数组的一项放在新数组中; 条件不成立, 忽略.
函数递归
必须等函数执行完成之后才有返回值
html 代码效果预览
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>
无尽菜单
</title>
</head>
<body>
<ul id="box">
<!-- <li>
<span></span>
<ul>
<li>
<span></span>
<ul>
<li>
<span></span>
</li>
</ul>
</li>
</ul>
</li> -->
</ul>
<script>
var item = [{
title: '周杰伦',
list: [{
title: '晴天',
list: [{
title: '天王',
list: [{
title: '好男人',
list: [{
title: '好爸爸'
}]
}]
}]
},
{
title: '告白气球',
list: [{
title: '周杰伦床边故事'
}]
}]
},
{
title: '林俊杰',
list: [{
title: '醉赤壁'
},
{
title: '可惜没如果',
list: [{
title: '最新'
}]
}]
},
{
title: '李宗盛',
list: [{
title: '山丘'
},
{
title: '给自己的歌',
list: [{
title: '情歌'
}]
}]
}];
// 第一级对象
// var html = '<ul>';
// for(var i = 0; i < item.length; i++){
// html += '<li><span>'+ item[i].title +'</span>';
// if(item[i].list){
// 第二级对象
// var html2 = '<ul>';
// for(var j = 0; j < item[i].list.length; j++){
// html2 += '<li><span>'+ item[i].list[j].title +'</span>';
// if(item[i].list[j].list){
// 第三级对象
// var html3 = '<ul>';
// for(var n = 0; n < item[i].list[j].list.length; n++){
// html3 +='<li><span>'+ item[i].list[j].list[n].title +'</span>';
// 第 n 级对象
// html3 += '</li>'
// }
// html3 += '</ul>';
// html2 += html3;
// }
// html2 += '</li>';
// }
// html2 += '</ul>';
// html += html2;
// }
// html += '</li>';
// }
// html += '</ul>';
// box.innerHTML = html;
// 定义一个构造结构函数
function play(item) {
// 先把第一级的结构搭建好
var html = '<ul>';
// 开始循环第一级的子内容
for (var i = 0; i < item.length; i++) {
// 把子项生成好, 有一个 span 和一个 ul
html += '<li><span>' + item[i].title + '</span>';
// 如果第一级的向里面还有内容, 就会走进去继续执行递归函数, 直到里里面没有内容为止
if (item[i].list) {
html += play(item[i].list);
}
// 把内容包裹住
html += '</li>';
}
// 这样分开是为了把内容包裹进去
html += '</ul>';
return html;
}
box.innerHTML = play(item);
</script>
</body>
</html>
来源: http://www.qdfuns.com/notes/48009/9f153b1b13089e402409a03df85ae648.html