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){}
参数
- currentValue 当前项,遍历中数组中正在被处理的数组项。作用:方便函数内使用搞事情。
- index 当前项目的下标呗。 作用:同上。
- array 重新给数组一个代号方便内部使用吧。
- 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}]