<!-- 数组循环的几种方法 --> <script> var arr = ['a', 'b', 'c', 'd', 'e']; //for循环 for (let i = 0; i < arr.length; i++) { // console.log(arr[i]) } //for循环优化 ( 使用临时变量,将长度缓存起来,避免重复获取数组长度,当数组较大时优化效果才会比较明显。这种方法基本上是所有循环遍历方法中性能最高的一种) for (let i = 0, len = arr.length; i < len; i++) { // console.log(arr[i]) } //foreach (数组自带的foreach循环,使用频率较高,实际上性能比普通for循环弱) arr.forEach(function (value, index, arr) { // console.log(value === arr[index]) // console.log('-') }) //map var arr = ['a', 'b', 'c', 'd', 'e']; var arr1 = arr.map(function (value, index, arr) { return value = value + "q"; }) // console.log(arr1) //for...in for (j in arr) { } //for...of for (let value of arr) { }; //forin循环最慢。优化后的普通for循环最快 </script> <!-- 对象循环的几种方式 --> <script> var obj = { name:'小中', age:18, like:'篮球' } //for…in 循环 for(let key in obj){ // console.log(key) // console.log(obj[key]) } //Object.keys方法遍历 (Object.keys返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性)。) console.log(Object.keys(obj)) //可枚举的key //Object.values 获取属性值 console.log(Object.values(obj)) //Object.getOwnPropertyNames(obj) 获取属性 console.log(Object.getOwnPropertyNames(obj)) //所有key </script>