for……in for……of 差别
  • 作者:admin
  • 发表时间:2020-11-06 07:50
  • 来源:未知

1 遍历数组一般用for循环

ES5得话还可以应用forEach,ES5具备遍历数组作用的也有map、filter、some、every、reduce、reduceRight等,只不过是她们的回到結果不一样。可是应用foreach遍历数组得话,应用break不可以终断循环系统,应用return也不可以回到到表层涵数。

Array.prototype.method=function(){

console.log(this.length);

}

var myArray=[1,2,4,5,6,7]

myArray.name="数组"

for (var index in myArray) {

console.log(myArray[index]);

}

2 for in遍历数组的问题

1.index数据库索引为字符串数组型数据,不可以立即开展几何图形计算

2.解析xml次序有可能并不是依照具体数组的內部次序

3.应用for in会遍历数组全部的可枚举类型特性,包含原形。比如上栗的原形方式method和name特性

因此 for in更合适遍历对象,不必应用for in遍历数组。

那麼除开应用for循环,怎样更简易的恰当的遍历数组做到大家的期待呢(即不解析xmlmethod和name),ES6中的for of更胜一筹.

Array.prototype.method=function(){

console.log(this.length);

}

var myArray=[1,2,4,5,6,7]

myArray.name="数组";

for (var value of myArray) {

console.log(value);

}

for in解析xml的是数组的数据库索引(即键名),而for of解析xml的是数组原素值。

for of解析xml的仅仅数组内的原素,而不包括数组的原形特性method和数据库索引name

3 遍历对象

遍历对象 一般用for in来遍历对象的键名

Object.prototype.method=function(){

console.log(this);

}

var myObject={

a:1,

b:2,

c:3

}

for (var key in myObject) {

console.log(key);

}

for in 能够解析xml到myObject的原形方式method,假如不愿解析xml原形方式和特性得话,能够在循环系统內部分辨一下,hasOwnPropery方式能够分辨某特性是不是该目标的案例特性

for (var key in myObject) {

if(myObject.hasOwnProperty(key)){

console.log(key);

}

}

一样能够根据ES5的Object.keys(myObject)获得目标的案例特性构成的数组,不包括原形方式和特性

Object.prototype.method=function(){

console.log(this);

}

var myObject={

a:1,

b:2,唐山网站制作公司

c:3

}

for..of可用解析xml数/数组目标/字符串数组/map/set等有着迭代器目标的结合.可是不可以遍历对象,由于沒有迭代器目标.与forEach()不一样的是,它能够恰当回应break、continue和return句子

for-of循环系统不兼容一般目标,但假如你要迭代更新一个目标的特性,你能用for-in循环系统(这也是它的做好本职工作)或內建的Object.keys()方式:

for (var key of Object.keys(someObject)) {