var a = [1, 2, ,,,,,,true,,,,,,, "a",,,,,,,,,,,,,,,4,,,,,56,,,,,,"b"]; //定义数组
var b = [], num = 0;
for (var i = 0; i < a.length; i ++) { //遍历数组
if (typeof a[i] == "number") //如果为数字,则返回该元素的值
b.push(a[i]);
num ++; //计数器
}
console.log(num); //返回42,说明循环了42次
console.log(b); //返回[1,2,4,56]
var b = [], num = 0;
for (var i in a) { //遍历数组
if(typeof a[i] == "number") //如果为数字,则返回该元素的值
b.push(a[i]);
num ++; //计数器
}
console.log(num); //返回7,说明循环了7次
console.log(b); //返回[1,2,4,56]
通过计时器可以看到,for/in 语句迭代数组,仅循环了 7 次,而 for 语句循环了 42 次。
array.forEach(callbackfn[, thisArg]);
参数说明如下:funtion callbackfn(value, index, array);
最多可以使用三个参数来声明回调函数。回调函数的参数说明如下。| forEach 方法启动后的条件 | 元素是否传递给回调函数 |
|---|---|
| 在数组的原始长度之外添加元素 | 否 |
| 添加元素以填充数组中缺少的元素 | 是,如果该索引尚未传递给回调函数 |
| 元素已更改 | 是,如果该元素尚未传递给回调函数 |
| 从数组中删除元素 | 否,除非该元素已传递给回调函数 |
function f(value,index,array) {
console.log("a[" + index + "] = " + value);
}
var a = ['a', 'b', 'c'];
a.forEach(f);
演示结果如下:
var a = [10, 11, 12], sum = 0;
a.forEach (function (value) {
sum += value;
});
console.log(sum); //返回33
var obj = {
f1 : function(value,index,array) {
console.log("a[" + index + "] = " + value);
arrar[index] = this.f2(value);
},
f2 : function (x) {return x * x;}
};
var a = [12, 26, 36];
a.forEach(obj.f1, obj);
console.log(a); //返回[144, 676, 1296]
var o = {a : "A", b : "B", c : "C"};
console.log(Object.keys(o)); //返回["a","b","c"]
var a = ["A", "B", "C"];
console.log(Object.keys(a)); //返回["0","1","2"]
keys 功能比较专一,应用范围比较窄,但是执行效率比较高。
var o = {a : "A", b : "B", c : "C"};
console.log(Object.keys(o).length); //返回3
var a = ["A", "B", "C"];
console.log(Object.keys(a).length); //返回3
Object 类型没有定义 length 原型属性,可以利用 keys 方法获取对象的长度。
var o = {a : "A", b : "B", c : "C"};
console.log(Object.keys(o)); //返回["a","b","c"]
console.log(Object.getOwnPropertyNames (o)); //返回["a","b","c"]
var a = ["A", "B", "C"];
console.log(Object.keys(a)); //返回["0","1","2"]
console.log(Object.getOwnPropertyNames (a)); //返回["0","1","2"]
数组的 length 是不可枚举的属性,所以仅能在 Object.getOwnPropertyNames 返回结果中看到。因此,要快速迭代数组,可以使用 keys 方法。
版权说明:Copyright © 广州松河信息科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州松河信息科技有限公司 版权所有