数据的流程
对于数据的流程这一部分,没有捷径,只能不断的做题来练习。
简单入门级
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岁以内');