提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
1.for语法
格式:
for (statement 1; statement 2; statement 3) {
code block to be executed
}
会发现for没有作用域的真正原因就是上面的解释过程中 大括号是一个代码块
for循环编程时只使用了它非常简单的一个功能 希望重复得到的变化的变量的值 值是有规律的变化
程序1:
//打印数组中的值
var arr=["hello","css","js","node"]
for (var i = 0; i < arr.length ;i++) {
console.log(i,arr[i])
}
运行结果:
程序2:
//打印数据的第二个到第6个元素
var arr=[20,3,4,5,10,6,20,7,35,45,6,56,87,768]
for(var i=1;i<6;i++){
console.log(arr[i])
}
运行结果:
程序3:
//打印这个数组的下标为奇数的元素
var arr=[20,3,4,5,10,6,20,7,35,45,6,56,87,768,100]
for(var i=1;i<arr.length;i=i+2){
console.log(i,arr[i])
}
运行结果:
2.for语句2
几个表达式中出选择题
程序1:
for(var i=0,j=6;i<4,j>0;i++,j--){
//6 5 4 3 2 1
//0 1 2 3 4 5
console.log(i)
}
运行结果:
3.for语句3
for中的业务条件筛选和数据处理
程序1:
var arr=[
{age:20,name:"karen",rank:580},
{age:14,name:"jack",rank:480},
{age:19,name:"marry",rank:600},
{age:12,name:"zhangsan",rank:680}
]
//打印数组中的对象的名字
for(var i=0;i<arr.length;i++){
console.log(arr[i].name)
}
运行结果:
程序2:
var arr=[
{age:20,name:"karen",rank:580},
{age:14,name:"jack",rank:480},
{age:19,name:"marry",rank:600},
{age:12,name:"zhangsan",rank:680}
]
//打印年龄大于18岁的对象的名字
for(var i=0;i<arr.length;i++){
if(arr[i].age>18){
console.log(arr[i].name)
}
}
运行结果:
程序3:
var arr=[
{age:20,name:"karen",rank:580},
{age:14,name:"jack",rank:480},
{age:19,name:"marry",rank:600},
{age:12,name:"zhangsan",rank:680}
]
//打印年龄大于18而且rank大于480的对象的名字
for(var i=0;i<arr.length;i++){
if(arr[i].age>18&&arr[i].rank>480){
console.log(arr[i].name)
}
}
运行结果:
//for遍历数据容器-for最常用的功能
//遍历就是把容器中每一个数据都取出
程序4:
var arr=[
{age:20,name:"karen",rank:580},
{age:14,name:"jack",rank:480},
{age:19,name:"marry",rank:600},
{age:12,name:"zhangsan",rank:680}
]
// 打印年龄小于18而且rank大于400的对象的名字拼接一个字符串"少年班"
//大于等于18rank大于480的名字拼接"普通班"
for(var i=0;i<arr.length;i++){
if(arr[i].age<18){
if(arr[i].rank>400){
console.log(arr[i].name+"-少年班")
}
}
else if(arr[i].rank>480){
console.log(arr[i].name+"-普通班")
}
}
运行结果:
程序5:
var arr=[
{id:123,text:"内容1",created_at:"2022-04-28 19:47",user: {name:"karen",online_status:1}},
{id:124,text:"内容2",created_at:"2022-04-27 19:22",user:{name:"jack",online_status:0}},
{id:125,text:"内容3",created_at:"2022-04-28 19:12",user:{name:"maryy",online_status:1}},
]
// 打印每一个对选的text内容 而且在内容后面拼接 在线/不在线
for(var i=0;i<arr.length;i++){
if(arr[i].user.online_status==1){
console.log(arr[i].text+"--在线")
}else if(arr[i].user.online_status==0){
console.log(arr[i].text+"--不在线")
}
}
运行结果:
程序6:
var arr=[
{id:123,text:"内容1",created_at:"2022-04-28 19:47",user: {name:"karen",online_status:1}},
{id:124,text:"内容2",created_at:"2022-04-27 19:22",user:{name:"jack",online_status:0}},
{id:125,text:"内容3",created_at:"2022-04-28 19:12",user:{name:"maryy",online_status:1}},
]
// 显示内容和时间 时间必须显示(刚刚 "x分钟前" "xx:xx" "xx-xx xx:xx")
for(var i=0;i<arr.length;i++){
var time=null;
//时间处理是后面学的 现在看一看
var nowdate=new Date()//当前时间
var sinadate=new Date(arr[i].created_at)//指定的时间点
var absdt=nowdate-sinadate
// console.log(absdt)
if(absdt<1000*60){
time="刚刚"
}
else if(60*1000<=absdt&&absdt<60*1000*60){
time=Math.floor((absdt/1000/60))+"分钟前" //把arr[i].created_at处理成"x分钟前"
}
else if(60*1000*60<=absdt&&absdt<60*1000*60*24){
time=sinadate.getHours()+":"+sinadate.getMinutes()//后面学
}
else if(60*1000*60*24<=absdt){
time=sinadate.getMonth()+1 + "-"+sinadate.getDate()+" "+ sinadate.getHours()+":"+sinadate.getMinutes()
}
var re=arr[i].text+"-----"+time
console.log(re)
}
运行结果:
4.for语句4
for的嵌套和业务混合
程序1:
var arr2=[{name:"karen"},{name:"jack"},{name:"marry"}]
//取出数组中每一个对象
for(var i=0;i<arr2.length;i++)
{
console.log(arr2[i])
}
//取出数组中的每一个对象的名字
for(var i=0;i<arr2.length;i++)
{
console.log(arr2[i].name)
}
运行结果:
程序2:
var arr3=[100,200,300,[2,3,5,4],{name:"karen"}]
// 取出arr3数组中每一个元素(如果这个元素是数组 再取出数组中元素:遍历)
for(var i=0;i<arr3.length;i++){
if(arr3[i] instanceof Array){
// console.log(arr3[i],1111111111)
for(var j=0;j<arr3[i].length;j++){
console.log(arr3[i][j])
}
}else{
console.log(arr3[i])
}
}
运行结果:
for循环该怎么嵌套
1.不要管内部的for与外部的for的执行问题==>每一个for都是遍历的自己的数组
2.for内部有条件语句和数据处理 得到了一个数组 然后用for去遍历它
程序3:
var arr = [{
name: "karen",
its: ["css", "js", "html"],
books: ["book1", "book5"]
},
{
name: "jack",
its: ["nodejs", "html"],
books: ["book2", "book3", "book6"]
},
{
name: "marry",
its: [],
books: ["book2"]
}
]
//打印arr数组中的所有字符串
//1.遍历arr 取出每一个对象obj
//2.obj取出它的每一个成员
//2.1成员是name直接打印
//2.2成员是its 是个数组(便历它)
//2.3成员是books 是个数组(便历它)
for(var i=0;i<arr.length;i++){
var obj=arr[i]
console.log(obj.name)
// console.log(obj.its)
for(var j=0;j<obj.its.length;j++){
console.log(obj.its[j])
}
// console.log(obj.books)
for(var k=0;k<obj.books.length;k++){
console.log(obj.books[k])
}
}
运行结果: