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); //返回3Object 类型没有定义 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-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有