猿站网:for……in for……of 区别

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.结点次序有可能并非依照前述数组的外部次序3.采用for in会结点数组大部份的可隐式特性,主要包括蓝本。比如永新县的蓝本方式method和name特性因此for in更适宜结点第一类,千万别采用for in结点数组。

因此除采用for循环式,怎样更单纯的恰当的结点数组达至他们的期许呢(即不结点method和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结点的是数组的检索(即键名),而for of结点的是数组原素值。

for of结点的而已数组内的原素,而不主要包括数组的蓝本特性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 能结点到myObject的蓝本方式method,如果不想结点蓝本方式和特性不然,能在循环式外部判断一下,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适用结点数/数组第一类/数组/map/set等拥有迭代器第一类的集合.但无法结点第一类,因为没有迭代器第一类.与forEach()不同的是,它能恰当响应break、continue和return语句

for-of循环式不支持普通第一类,但如果你想迭代一个第一类的特性,你能用for-in循环式(这也是它的本职工作)或内建的Object.keys()方式:

for (var key of Object.keys(someObject)) {
  console.log(key + ": " + someObject[key]);
}

结点map第一类时适宜用解构,比如;

for (var [key, value] of phoneBookMap) {
   console.log(key + "s phone number is: " + value);
}

附:跳出循环式

foreach  无法终止或跳过循环式

for of 支持跳出循环式

const fruits = [Apple,Banana,Orange,Mango];

for(let fruit of fruits){
  if(fruit === Orange){
    break;  //终止
  }
  console.log(fruit);  // Apple Banana
}

for(let fruit of fruits){
  if(fruit === Orange){
    continue;  //跳出循环式
  }
  console.log(fruit);  // Apple Banana Mango
}

建站知识

小知识:web页面的单页打印以及批量打印实现方法

2022-5-20 21:44:10

建站知识

猿站网:JS遍历对象,获取key:value

2022-5-20 21:54:24

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索