Skip to content

数据的流程

对于数据的流程这一部分,没有捷径,只能不断的做题来练习。

简单入门级

for循环核心注意事项无非就是:

  • 确定循环能够执行的次数 (看循环条件)
  • 循环执行多少次内部的代码。

技巧:

至于循环条件什么时候取"="号,我们可以这样理解。 0-99 总共100个数字 如果i=0 i<100 没有取到100 那么就是循环了100次 如果取到了100 那么就是循环了101次 1-100 总共100个数字 如果i=1 i<100 没有取到100 那么就是循环了99次 如果取到了100 那么就是循环了100次

js
/* 
1. 输出100个hello world
*/

for (let i = 0; i < 100; i++) {
    console.log('hello world');
}

/* 
2. 输出100~200
*/

for (let i = 100; i <= 200; i++) {
    console.log(i);
}

/* 
3. 创建一个包含1~100的数组
*/
let arr = [];
for (let i = 1; i <= 100; i++) {
    arr.push(i);
}

/* 
4. 定义一个数组,遍历输出它的每一项
*/
let arr2 = [1, 2, 3, 4, 5];
for (let i = 0; i < arr2.length; i++) {
    console.log(arr2[i]);
}

/* 
5. 输出1-100的所有奇数
*/
for (let i = 1; i <= 100; i++) {
    if (i % 2 !== 0) {
        console.log(i);
    }
}

/* 
6. 定义一个数组,输出数组中所有的奇数
*/
let arr = [1, 2, 3, 4, 5];
for (let i = 0; i < arr.length; i++) {
    if (arr[i] % 2 !== 0) {
        console.log(arr[i]);
    }
}

/* 
7. 定义一个数组,找出所有的奇数,放入到一个新数组中
*/
let arr2 = [1, 2, 3, 4, 5];
let newArr = [];
for (let i = 0; i < arr2.length; i++) {
    if (arr2[i] % 2 !== 0) {
        newArr.push(arr2[i]);
    }
}
console.log(newArr);

进阶

js
/* 
1. 1~100求和
*/
let sum = 0;
for (let i = 1; i <= 100; i++) {
    sum += i;
}
console.log(sum);

/* 
2. 求某个数的阶乘
*/
let num = 5;
for (let i = num - 1; i >= 1; i--) {
    num *= i;
}
console.log(num);

// 递归的写法
const factorial = (n) => {
    if (n === 1) {
        return 1;
    }
    return n * factorial(n - 1);
};
console.log(factorial(5));


/* 
3. 数组求和
*/
let arr = [1, 2, 3, 4, 5];
let sum2 = 0;

for (let i = 0; i < arr.length; i++) {
    sum2 += arr[i]
}
console.log(sum2);


/* 
4. 求数组中的奇数的个数
*/
let arr2 = [1, 2, 3, 4, 5];
let count = 0;

for (let i = 0; i < arr2.length; i++) {
    if (arr2[i] % 2 !== 0) {
        count++;
    }
}
console.log(count);


/* 
5. 求数组中的奇数和
*/
let sum3 = 0;
for (let i = 0; i < arr2.length; i++) {
    if (arr2[i] % 2 !== 0) {
        sum3 += arr2[i];
    }
}
console.log(sum3);

/* 
6. 数组中是否存在某个数,输出 是 或 否
*/
let arr = [1, 2, 3, 4, 5];
let num = 3;
let isExist = false;

for (let i = 0; i < arr.length; i++) {
    if (arr[i] === num) {
        isExist = true;
        break;
    }
}
console.log(isExist ? '是' : '否');

/* 
7. 数组中是否存在某个数,如果存在,则输出它所在的下标,如果不存在,则输出-1
*/
let index = -1;
for (let i = 0; i < arr.length; i++) {
    if (arr[i] === num) {
        index = i;
        break;
    }
}
console.log(index);

/* 
8. 找到数组中第一个奇数和最后一个奇数,将它们求和
*/
// 这题主要思路就是可以倒着循环一次,找到倒着循环的第一个奇数即可
let firstOdd = -1;
let lastOdd = -1;

for (let i = 0; i < arr.length; i++) {
    if (arr[i] % 2 === 1) {
        firstOdd = arr[i];
        break;
    }
}
for (let i = arr.length - 1; i >= 0; i--) {
    if (arr[i] % 2 === 1) {
        lastOdd = arr[i];
        break;
    }
}
console.log(firstOdd + lastOdd);

/* 
9. 有两个数组,看两个数组中是否都存在奇数,输出 是 或 否
*/
let arr2 = [2, 4, 6, 8];
let arr3 = [1, 3, 5, 7];
let ifFind1 = false;
let ifFind2 = false;

for (let i = 0; i < arr2.length; i++) {
    if (arr2[i] % 2 === 1) {
        ifFind1 = true;
        break;
    }
}
for (let i = 0; i < arr3.length; i++) {
    if (arr3[i] % 2 === 1) {
        ifFind2 = true;
        break;
    }
}
console.log(ifFind1 && ifFind2 ? '是' : '否');

高级

js
/* 
1. 输出一个对象的所有键值对
*/
const obj = {
    name: '张三',
    age: 18,
    sex: '男',
    address: '中国 北京',
    tel: '13800000000',
}

for (let key in obj) {
    console.log(key, obj[key]);
}


/* 
2. 计算对象中字符串属性的数量
*/
let count = 0;
for (let key in obj) {
    if (typeof obj[key] === 'string') {
        count++
    }
}
console.log(count);


/* 
3. 将一个对象所有的数字属性,转换为字符串,并在其前面加上¥
例如:
let obj2={
    name:"xxx",
    balance: 199.8, //余额
    taken: 3000 //消费
}

{
    name:"xxx",
    balance: '¥199.8', //余额
    taken: '¥3000' //消费
}
 */

let obj2 = {
    name: "xxx",
    balance: 199.8, //余额
    taken: 3000 //消费
}

for (let key in obj2) {
    if (typeof obj2[key] === "number") {
        obj2[key] = `¥${obj2[key]}`
    }
}
console.log(obj2);


/* 
4. 按照下面的要求进行转换
[1, 2, 3]  
-->
[
    {number:1, doubleNumber: 2},
    {number:2, doubleNumber: 4},
    {number:3, doubleNumber: 6},
]
*/
let arr = [1, 2, 3];

//普通解决 
let arrObj = [];

for (let i = 0; i < arr.length; i++) {
    let obj = {
        number: arr[i],
        doubleNumber: arr[i] * 2
    }
    arrObj.push(obj);
}
console.log(arrObj);


// Es6
let newArr = arr.map(item => {
    return {
        number: item,
        doubleNumber: item * 2
    }
})
console.log(newArr);

实战练习

js
var students = [
  {
    id: 988985,
    name: '梁平',
    sex: '女',
    age: 15,
    address: '安徽省 淮南市',
    tel: '12957961008',
  },
  {
    id: 299422,
    name: '邱杰',
    sex: '男',
    age: 25,
    address: '辽宁省 本溪市',
    tel: '12685726676',
  },
  {
    id: 723972,
    name: '王超',
    sex: '女',
    age: 14,
    address: '新疆维吾尔自治区 阿克苏地区',
    tel: '15277794541',
  },
  {
    id: 723768,
    name: '冯秀兰',
    sex: '女',
    age: 29,
    address: '辽宁省 丹东市',
    tel: '13014888148',
  },
  {
    id: 536273,
    name: '赖军',
    sex: '男',
    age: 19,
    address: '重庆 重庆市',
    tel: '15152658611',
  },
  {
    id: 940136,
    name: '顾强',
    sex: '男',
    age: 20,
    address: '吉林省 松原市',
    tel: '18562759588',
  },
  {
    id: 489462,
    name: '戴敏',
    sex: '男',
    age: 25,
    address: '湖南省 长沙市',
    tel: '11513562318',
  },
  {
    id: 863594,
    name: '吕涛',
    sex: '女',
    age: 16,
    address: '湖北省 襄阳市',
    tel: '16246419558',
  },
  {
    id: 718313,
    name: '冯静',
    sex: '女',
    age: 28,
    address: '黑龙江省 牡丹江市',
    tel: '18243767800',
  },
  {
    id: 262068,
    name: '蔡明',
    sex: '男',
    age: 20,
    address: '黑龙江省 七台河市',
    tel: '14185862227',
  },
  {
    id: 900366,
    name: '廖磊',
    sex: '女',
    age: 23,
    address: '青海省 海南藏族自治州',
    tel: '19469661693',
  },
  {
    id: 316019,
    name: '冯洋',
    sex: '男',
    age: 16,
    address: '江西省 新余市',
    tel: '18842832768',
  },
  {
    id: 773536,
    name: '韩杰',
    sex: '男',
    age: 23,
    address: '云南省 丽江市',
    tel: '18560747335',
  },
  {
    id: 494398,
    name: '江涛',
    sex: '男',
    age: 24,
    address: '山西省 大同市',
    tel: '12774658592',
  },
  {
    id: 177459,
    name: '文艳',
    sex: '男',
    age: 27,
    address: '山东省 青岛市',
    tel: '16233511417',
  },
  {
    id: 979439,
    name: '杜秀英',
    sex: '男',
    age: 22,
    address: '甘肃省 张掖市',
    tel: '14723781356',
  },
  {
    id: 142762,
    name: '丁艳',
    sex: '男',
    age: 28,
    address: '澳门特别行政区 澳门半岛',
    tel: '13157638539',
  },
  {
    id: 157141,
    name: '邓静',
    sex: '女',
    age: 19,
    address: '海南省 三亚市',
    tel: '17658672240',
  },
  {
    id: 243063,
    name: '江刚',
    sex: '女',
    age: 15,
    address: '安徽省 六安市',
    tel: '18205383748',
  },
  {
    id: 351709,
    name: '乔刚',
    sex: '女',
    age: 12,
    address: '安徽省 蚌埠市',
    tel: '14143838021',
  },
  {
    id: 236140,
    name: '史平',
    sex: '男',
    age: 24,
    address: '广西壮族自治区 百色市',
    tel: '11895866733',
  },
  {
    id: 254260,
    name: '康娜',
    sex: '男',
    age: 29,
    address: '辽宁省 铁岭市',
    tel: '18783219853',
  },
  {
    id: 387769,
    name: '袁磊',
    sex: '男',
    age: 28,
    address: '重庆 重庆市',
    tel: '15243676922',
  },
  {
    id: 692436,
    name: '龙秀英',
    sex: '男',
    age: 18,
    address: '吉林省 延边朝鲜族自治州',
    tel: '18667285569',
  },
  {
    id: 304202,
    name: '姚静',
    sex: '男',
    age: 21,
    address: '吉林省 松原市',
    tel: '17962179634',
  },
  {
    id: 533032,
    name: '潘娜',
    sex: '男',
    age: 13,
    address: '湖北省 孝感市',
    tel: '14132684173',
  },
  {
    id: 773792,
    name: '萧磊',
    sex: '男',
    age: 29,
    address: '河南省 焦作市',
    tel: '13865617456',
  },
  {
    id: 171440,
    name: '邵勇',
    sex: '男',
    age: 16,
    address: '宁夏回族自治区 固原市',
    tel: '19454444332',
  },
  {
    id: 428587,
    name: '李芳',
    sex: '男',
    age: 29,
    address: '四川省 宜宾市',
    tel: '14751601674',
  },
  {
    id: 926156,
    name: '谭芳',
    sex: '女',
    age: 27,
    address: '湖南省 长沙市',
    tel: '18683429563',
  },
  {
    id: 171494,
    name: '夏秀英',
    sex: '男',
    age: 14,
    address: '陕西省 安康市',
    tel: '17732967642',
  },
  {
    id: 549517,
    name: '程娜',
    sex: '女',
    age: 24,
    address: '内蒙古自治区 锡林郭勒盟',
    tel: '18927839708',
  },
  {
    id: 999121,
    name: '武杰',
    sex: '女',
    age: 21,
    address: '新疆维吾尔自治区 博尔塔拉蒙古自治州',
    tel: '15349698338',
  },
  {
    id: 440785,
    name: '崔军',
    sex: '男',
    age: 26,
    address: '山西省 临汾市',
    tel: '14863312346',
  },
  {
    id: 113636,
    name: '廖勇',
    sex: '女',
    age: 19,
    address: '重庆 重庆市',
    tel: '18152536541',
  },
  {
    id: 109280,
    name: '崔强',
    sex: '女',
    age: 25,
    address: '河南省 安阳市',
    tel: '12838860122',
  },
  {
    id: 988885,
    name: '康秀英',
    sex: '女',
    age: 29,
    address: '广东省 佛山市',
    tel: '12637161150',
  },
  {
    id: 751542,
    name: '余磊',
    sex: '女',
    age: 15,
    address: '香港特别行政区 九龙',
    tel: '16716667565',
  },
  {
    id: 821693,
    name: '邵勇',
    sex: '女',
    age: 27,
    address: '内蒙古自治区 鄂尔多斯市',
    tel: '11869733772',
  },
  {
    id: 595152,
    name: '贺涛',
    sex: '女',
    age: 12,
    address: '吉林省 通化市',
    tel: '18172684836',
  },
  {
    id: 209059,
    name: '万勇',
    sex: '男',
    age: 27,
    address: '江苏省 淮安市',
    tel: '13523350881',
  },
  {
    id: 331199,
    name: '江艳',
    sex: '男',
    age: 29,
    address: '内蒙古自治区 包头市',
    tel: '14357786637',
  },
  {
    id: 597029,
    name: '廖磊',
    sex: '女',
    age: 22,
    address: '新疆维吾尔自治区 伊犁哈萨克自治州',
    tel: '14343812715',
  },
  {
    id: 243965,
    name: '马芳',
    sex: '女',
    age: 29,
    address: '湖南省 长沙市',
    tel: '12226278003',
  },
  {
    id: 796997,
    name: '郝霞',
    sex: '女',
    age: 29,
    address: '辽宁省 锦州市',
    tel: '15734778439',
  },
  {
    id: 735045,
    name: '吴娜',
    sex: '男',
    age: 18,
    address: '江西省 鹰潭市',
    tel: '12550200851',
  },
  {
    id: 858934,
    name: '石秀英',
    sex: '男',
    age: 21,
    address: '福建省 南平市',
    tel: '14296454005',
  },
  {
    id: 646003,
    name: '苏静',
    sex: '女',
    age: 17,
    address: '澳门特别行政区 澳门半岛',
    tel: '11456865751',
  },
  {
    id: 607537,
    name: '于磊',
    sex: '女',
    age: 25,
    address: '海南省 海口市',
    tel: '14742847575',
  },
  {
    id: 817410,
    name: '胡超',
    sex: '女',
    age: 19,
    address: '海外 海外',
    tel: '16875962137',
  },
  {
    id: 985064,
    name: '任杰',
    sex: '男',
    age: 17,
    address: '云南省 迪庆藏族自治州',
    tel: '17548787335',
  },
  {
    id: 644060,
    name: '汪秀英',
    sex: '男',
    age: 19,
    address: '香港特别行政区 九龙',
    tel: '10278533538',
  },
  {
    id: 755803,
    name: '徐磊',
    sex: '女',
    age: 26,
    address: '江苏省 徐州市',
    tel: '18721465794',
  },
  {
    id: 538130,
    name: '熊洋',
    sex: '男',
    age: 13,
    address: '吉林省 白城市',
    tel: '13491345641',
  },
  {
    id: 977696,
    name: '孟磊',
    sex: '男',
    age: 24,
    address: '香港特别行政区 香港岛',
    tel: '10541964547',
  },
  {
    id: 683438,
    name: '赵霞',
    sex: '男',
    age: 28,
    address: '重庆 重庆市',
    tel: '13085741830',
  },
  {
    id: 342123,
    name: '曾芳',
    sex: '女',
    age: 15,
    address: '湖南省 邵阳市',
    tel: '11645124878',
  },
  {
    id: 261733,
    name: '马芳',
    sex: '女',
    age: 22,
    address: '台湾 新北市',
    tel: '10255722846',
  },
  {
    id: 303578,
    name: '姜杰',
    sex: '女',
    age: 17,
    address: '黑龙江省 齐齐哈尔市',
    tel: '12581543256',
  },
  {
    id: 907392,
    name: '熊杰',
    sex: '男',
    age: 16,
    address: '广西壮族自治区 北海市',
    tel: '18941398494',
  },
];

// 遍历输出学生的姓名
// for (const key in students) {
//   console.log(students[key]['name']);
// }

// 得到所有女生(新数组)
// let femaleArr = [];
// for (const key in students) {
//   if (students[key].sex == '女') {
//     femaleArr.push(students[key]);
//   }
// }
// console.log(femaleArr);


// 得到所有年龄在25岁以下的女生(新数组)
// let femaleArr = [];
// for (const key in students) {
//   if (students[key].age < 25) {
//     femaleArr.push(students[key]);
//   }
// }
// console.log(femaleArr);

// 得到所有姓陈的学生(新数组)
// let ChenArr = [];
// for (const key in students) {
//   if (students[key].name.startsWith('陈')) {
//     femaleArr.push(students[key]);
//   }
// }
// console.log(ChenArr);

// 得到所有电话号码以1结尾的学生(新数组)
// let phoneArr = [];
// for (const key in students) {
//   if (students[key].tel.endsWith('1')) {
//     phoneArr.push(students[key]);
//   }
// }
// console.log(phoneArr);

// 得到所有学生姓名组成的数组(新数组)
// let nameArr = [];
// for (const key in students) {
//   nameArr.push(students[key].name);
// }
// console.log(nameArr);

// 得到所有女生的姓名数组(新数组)
// let femaleNameArr = [];
// for (const key in students) {
//   if (students[key].sex == '女') {
//     femaleNameArr.push(students[key].name);
//   }
// }
// console.log(femaleNameArr);

// 得到所有女生的姓名和电话号码 [ {name:'monica', tel:'18122223333'} ]
// let mapArr = [];
// for (const key in students) {
//   if (students[key].sex == '女') {
//     mapArr.push({ name: students[key].name, tel: students[key].tel });
//   }
// }
// console.log(mapArr);


// 得到所有学生的年龄的总和
// let ageSum = 0;
// for (let key in students) {
//   ageSum += students[key].age;
// }
// console.log(ageSum);

// 得到所有学生的平均年龄
// let ageSum = 0;
// let ageAvg = 0;
// for (let key in students) {
//   ageSum += students[key].age;
// }
// console.log(ageSum / students.length);

// 得到一个对象: {name:['张三', '李四', ...], age: [17, 25, ...]}
// let newObj = {
//   names: [],
//   ages: [],
// };

// for (let key in students) {
//   newObj.names.push(students[key].name);
//   newObj.ages.push(students[key].age);
// }

// console.log(newObj);

// 找到id为796997的学生对象
// let hasStu = false;
// for (let key in students) {
//   if (students[key].id === 796997) {
//     hasStu = true;
//     break;
//   }
// }
// console.log(hasStu ? '有' : '无');

//ES6
// let target = students.find(stu => stu.id === 796997);
// console.log(target);

// 是否包含年龄大于28岁的男生
// let hasAge = false;
// for (let key in students) {
//   if (students[key].age > 28 && students[key].sex === '男') {
//     hasAge = true;
//     break;
//   }
// }
// console.log(hasAge ? '有' : '无');

// let target2 = students.some(stu => stu.age > 28 && stu.sex === '男');
// console.log(target2);

// 反向思维:是否所有的女生年龄都在28岁以内
//可以将题换成  是否有大于28岁的女生,是的话原题干就不成立了
let flag = true;//假设所有女生都在28岁以内
for (let key in students) {
  if (students[key].sex === '女' && students[key].age > 28) {
    flag = false;
    break;
  }
}
console.log(flag ? '所有的女生年龄都在28岁以内' : '不是所有的女生年龄都在28岁以内');

//ES6
// let flag = students.every(stu => stu.sex === '女' && stu.age < 28);
// console.log(flag ? '所有的女生年龄都在28岁以内' : '不是所有的女生年龄都在28岁以内');

MIT License