猿站网: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
}
声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

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

2022-5-20 21:44:10

建站知识

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

2022-5-20 21:54:24

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