您的位置:首页 > Web前端 > JavaScript

js遍历数组和遍历对象的区别

2017-12-27 13:00 543 查看
<script>
//----------------for用来遍历数组对象--
var i,myArr = [1,2,3];
for (var i = 0; i < myArr.length; i++) {
console.log(i+":"+myArr[i]);
};
//---------for-in 用来遍历非数组对象
var man ={hands:2,legs:2,heads:1};
//为所有的对象添加clone方法,即给内置原型(object,Array,function)增加原型属性,该方法很强大,也很危险
if(typeof Object.prototype.clone ==="undefined"){
Object.prototype.clone = function(){};
}
//
for(var i in man){
if (man.hasOwnProperty(i)) { //filter,只输出man的私有属性
console.log(i,":",man[i]);
};
}
//输出结果为print hands:2,legs:2,heads:1

for(var i in man) {//不使用过滤
console.log(i,":",man[i]);
}
//输出结果为
//hands : 2 index.html:20
//legs : 2 index.html:20
//heads : 1 index.html:20
//clone : function (){}
for(var i
23ff7
in man) {
if(Object.prototype.hasOwnProperty.call(man,i)) { //过滤
console.log(i,":",man[i]);
}
}

//输出结果为print hands:2,legs:2,heads:1

</script>

原生JavaScript 遍历

  1、for 循环遍历

1 let array1 = ['a','b','c'];
2
3 for (let i = 0;i < array1.length;i++){
4   console.log(array1[i]);  // a  b  c
5 }

  2、JavaScript 提供了 foreach() map() 两个可遍历 Array对象 的方法

    forEach和map用法类似,都可以遍历到数组的每个元素,而且参数一致;  
    不同点: forEach() 方法对数组的每个元素执行一次提供的函数。总是返回undefined; map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。返回值是一个新的数组; 例子如下:
    对于类似数组的结构,可先转换为数组,再进行遍历  

  3、 for ··· in ··· / for ··· of ···

     
for...in
语句以任意顺序遍历一个对象的可枚举属性。对于每个不同的属性,语句都会被执行。每次迭代时,分配的是属性名       补充 : 因为迭代的顺序是依赖于执行环境的,所以数组遍历不一定按次序访问元素。 因此当迭代那些访问次序重要的 arrays 时用整数索引去进行
for
循环 (或者使用
Array.prototype.forEach()
for...of
循环) 。
       ES6新增了 遍历器(Iterator)机制,为不同的数据结构提供统一的访问机制。只要部署了Iterator的数据结构都可以使用 for ··· of ··· 完成遍历操作 ( Iterator详解 : http://es6.ruanyifeng.com/#docs/iterator ),每次迭代分配的是属性值    原生具备 Iterator 接口的数据结构如下:      Array Map Set String TypedArray 函数的arguments对象 NodeList对象
  如何让普通对象可以用for of 进行遍历呢? http://es6.ruanyifeng.com/#docs/iterator 一书中有详细说明了!   除了迭代时分配的一个是属性名、一个是属性值外,for in 和 for of 还有其他不同 (MDN文档: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/for...of)    for...in循环会遍历一个object所有的可枚举属性。    for...of会遍历具有iterator接口的数据结构   
for...in
遍历(当前对象及其原型上的)每一个属性名称,而
for...of遍历(当前对象上的)每一个属性值
  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: