扯一扯js for in ForEach 第一次写文章有点小激动呢

for in 

for (变量 in 对象)
{
    在此执行代码
}

语句用于对数组或者对象的属性进行循环操作。

for ... in 循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。 

由于数组也是对象所以可以理解为对对象操作。

var person={fname:"John",lname:"Doe",age:25}; 
for (x in person)
{
    txt=txt + person[x];
}

注意如果有原型属性,原型属性也会被访问

Object.prototype.bar = 10;// 修改Object.prototype
var obj={"name":"wjy","age":26,"sex":"female"};//定义一个object对象
var keys=[];//定义一个数组用来接受key
var values=[];//定义一个数组用来接受value
for(var key in obj){
  keys.push(key);
  values.push(obj[key]);//取得value
}
alert("keys is :"+keys+" and values is :"+values);

!!如果不想被访问原型

if (obj.hasOwnProperty(key) === true){
  keys.push(key);
  values.push(obj[key]);
}

forEach()

述: 方法让数组的每一项都执行一次给定的函数。

语法array.forEach(callback[currentValue,index,array,thisArg]);

 callback:回调函数,常规意义就是当函数本身执行完毕,再去执行参数上的回调函数。就是function(currentValue,index,thisArg){}

参数

  1.   currentValue        当前项,遍历中数组中正在被处理的数组项。作用:方便函数内使用搞事情。
  2.   index                    当前项目的下标呗。      作用:同上。
  3.   array                    重新给数组一个代号方便内部使用吧。
  4.    thisArg                  修改内部值的指向。

描述

  forEach 方法按升序为数组中含有效值的每一项执行一次callback 函数,那些已删除(使用delete方法等情况)或者从未赋值的项将被跳过。

特点

  简单说不出错,无法中断,切保持开始状态。

  forEach 遍历的范围在第一次调用 callback 前就会确定。调用forEach 后添加到数组中的项不会被 callback 访问到。如果已经存在的值被改变,则传递给 callback 的值是 forEach 遍历到他们那一刻的值。已删除的项不会被遍历到。

示例

  1.遍历数组中的数,模拟一个数组。  

  foreach形式

   function logArrayElements(element, index, array) {

       console.log("a[" + index + "] = " + element);
    }
    [2, 5, 9].forEach(logArrayElements);
 正常for形式
    var arr = [2,5,9];
    for(var i=0; i<arr.length;i++){
      console.log('arr['+i+']='+arr[i]);
    }

实例2

  var arr=[{a:1},{}];

  arr.forEach(function(item,idx){
    item.b=idx;
  });
 结果:B.[{a:1,b:0},{b:1}] 
原文地址:https://www.cnblogs.com/LiSuSpAu/p/5687838.html