概述
1、for循环
// let arr = [1, 2, 3];// for (let i = 10; i < arr.length; i++) {// console.log(i, arr[i]);// }
while和do...while就省拉
2、for..in、for...of
2.1 for...in 循环:只能获得对象的键名,不能获得键值,for...of 循环:允许遍历获得键值
// var arr = ["red", "green", "blue"];// for (let item in arr) {// console.log("for in item", item); //0,1,2// }// for (let item of arr) {// console.log("for of item", item); //red green blue// }
2.2 对于普通对象,for...in遍历键名,for..of直接用会报错
// let obj = {// name: "Jim Green",// age: 12,// };// for (let key in obj) {// console.log(key); //name age// }// for (let key of Object.keys(obj)) {// console.log(key); //name age// }
2.3 for...in 循环不仅遍历数字键名,还会遍历手动添加的其它键,甚至包括原型链上的键。for...of 则不会这样
// let arr = [1, 2, 3];// arr.set = "world"; // 手动添加的键// Array.prototype.name = "hello"; // 原型链上的键// for (let item in arr) {// console.log(item); //0,1,2 ,set,name// }// for (let value of arr) {// console.log(value); //1 2 3// }
2.4 forEach 无法用return、break、continue, for..in for...of可以
// let arr = [1, 2, 3, 5, 9];// arr.forEach((item) => {// if (item % 2 === 0) {// return;// }// console.log("item", item); //1 3 5 9// });// for (let item in arr) {// if (arr[item] % 2 === 0) {// break;// }// console.log("item", arr[item]); //1// }// for (let item of arr) {// if (item % 2 === 0) {// break;// }// console.log("item", item); //1// }
2.5、无论是 for...in 还是 for...of 都不能遍历出 Symbol 类型的值,遍历 Symbol 类型的值需要用 Object.getOwnPropertySymbols() 方法
// let a = Symbol("a");// let b = Symbol("b");// let obj = {// [a]: "hello",// [b]: "world",// c: "es6",// d: "dom",// };// for (let key in obj) {// console.info(obj[key]); //es6、domo// }// let objSymbols = Object.getOwnPropertySymbols(obj);// console.info(objSymbols); // [Symbol(a), Symbol(b)]// objSymbols.forEach((item) => {// console.info(item.toString() + " --> " + obj[item]); //Symbol(a) --> hello Symbol(b) --> world// });//
3、数组遍历
3.1 map方法和forEach方法一样,只能遍历数组,不能遍历对象,map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值
// let arr = [1, 2, 3];// let tt = arr.map(function (i) {// console.log(i);// return i * 2; //[2,4,6]// });
3.2 filter 方法是 Array 对象内置方法,它会返回通过过滤的元素,不改变原来的数组
// let arr = [1, 2, 3];// let tt = arr.filter(function (i) {// return i > 1;// });// // [2,3]
3.3 some() 方法用于检测数组中的元素是否满足指定条件(函数提供),返回 boolean 值,不改变原数组
// let arr = [1, 2, 3];// let tt = arr.some(function (i) {// return i > 1;// });// // true
3.4 Array every() 方法every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供),返回 boolean 值,不改变原数组
// let arr = [1, 2, 3];// let tt = arr.some(function (i) {// return i > 1;// });// // 检测数组中元素是否都大于1// // false
3.5 reduce方法
var arr = [3, 9, 4, 3, 6, 0, 9]; var sum = arr.reduce(function (prev, cur) { return prev + cur; //求数组之和 }, 0); // prev的初始值为0,第一次时cur为3,完了后下一次的prev为3 cur为9 var max = arr.reduce(function (prev, cur) { return Math.max(prev, cur); //求最大值 }); var newArr = arr.reduce(function (prev, cur) { prev.indexOf(cur) === -1 && prev.push(cur); return prev; //去重,第一次prev为[], 在prev找3,没有找到就把3加到数组中,作为下一次的prev }, []);
扫码关注【程序员有道】
最后
以上就是腼腆鸵鸟为你收集整理的c++for循环求最大公约数_不数不知道,一数吓一跳,JS里循环竟高达10多种 !的全部内容,希望文章能够帮你解决c++for循环求最大公约数_不数不知道,一数吓一跳,JS里循环竟高达10多种 !所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复