image.png

image.png

  1. var arr=[1, 2,3,4,5];
  2. var obj={a:1,b:2,c:3,d:4,e:5};
  3. console.log(Object.keys(obj));
  4. console.log(Object.values(obj));
  5. console.log(Object.entries(obj));
  6. for(var key of Object.keys(obj)){
  7. console.log(key);
  8. }
  9. for(var value in Object.values(obj)){
  10. console.log(value);
  11. }
  12. for(var [key,value] of Object.entries(obj)){
  13. console.log(value,value);
  14. }

image.png
image.png
image.png

  1. var arr=[1, 2,3,4,5];
  2. var obj ={a:1,b:2,c:3,d:4,e:5};
  3. console.log(arr.keys());
  4. console.log(arr.values());
  5. console.log(arr.entries());
  6. for(var key of arr.keys()){
  7. console.log(key);
  8. }
  9. for(var value in arr.values()){
  10. console.log(value);
  11. }
  12. for(var [key,value] of arr.entries()){
  13. console.log(key,value);
  14. }

出现错误
image.png
迭代器
image.png

迭代方法

foreach

image.png
两个方法结果完全一样
image.png
image.png
forEach没有返回值
image.png
内置接口是底层用c++写的,不是js写的

image.png
image.png
箭头函数,第二个this参数无影响

image.png
不会走这个方法,当数组是空的时候

image.png
稀松数组里面的值不会走
image.png

image.png
删除之后变成稀松数组,for遍历可以打印出undefined,但forEach不可以
image.png

image.png
结果出现问题问题,forEach不能break
image.png

image.png
1,2,3,4,5

image.png
image.png

  1. var arr=[1, 2,3,4,5];
  2. var arr1=arr.map(function(item,index,arr){
  3. return item*2;
  4. })
  5. console.log(arr)
  6. console.log(arr1)

image.png

image.png
this就是arr,就是arr[1] arr[2]
image.png

image.png
image.png
image.png
便利的取到每一项的值

题目

image.png
找出每个数组中最大的那个

image.png
返回映射关系的数组

  1. var arr = [1, 2, 3, 4, 5];
  2. var arr1 = arr.map(function (item, index, arr) {
  3. //return item>3 //[false,false,false,true,true]
  4. if(item>3){
  5. return item;
  6. }
  7. })
  8. console.log(arr)
  9. console.log(arr1)

image.png