js循環(huán)

const fruits=['orange','apple','banana','mango'];
for循環(huán)
for(let i=0;i<fruits.length;i++){
  console.log(fruits[i]);
}
//orange
//apple
//banana
//mango
forEach
fruits.forEach(fruit=>{
  console.log(fruit)
})
//orange
//apple
//banana
//mango

但是forEach不能中止或者中途跳出循環(huán),即不能使用break涮总,continue這些:

fruits.forEach(fruit=>{
  break;
})
//Uncaught SyntaxError: Illegal break statement at Array.forEach (native) at <anonymous>:1:8
fruits.forEach(fruit=>{
  continue;
})
//Uncaught SyntaxError: Illegal continue statement
for...in

注意:for...in遍歷的是下標(biāo)

for(let index in fruits){
  console.log(fruits[index])
}

需要注意的是惰拱,for...in還會(huì)遍歷原型上的屬性淮逊,能夠遍歷可枚舉繼承的屬性

Array.prototype.a=function(){
  return this[0];
}
fruits.a="aaa";
for(let index in fruits){
    console.log(fruits[index])
}
//orange
//apple
//banana
//mango
//aaa
//function(){return this[0];}

對(duì)于原型繼承的屬性我們有時(shí)候可以用hasOwnProperty()來過濾掉

es6的for...of
for(let fruit of fruits){
  console.log(fruit)
}
//orange
//apple
//banana
//mango
  • 支持中止循環(huán)即跳出循環(huán):
for(let fruit of fruits){
  if(fruit==='apple'){
    break;
  }
  console.log(fruit)
}
//orange
for(let fruit of fruits){
  if(fruit==='apple'){
    continue;
  }
  console.log(fruit)
}
//orange
//banana
//mango
  • for...of還可以這樣遍歷:
for(let fruit of fruits.entries()){
  console.log(fruit)
}
//[0, "orange"]
//[1, "apple"]
//[2, "banana"]
//[3, "mango"]
for(let [index,fruit] of fruits.entries()){
  console.log(`${index}-${fruit}`)
}
//0-orange
//1-apple
//2-banana
//3-mango
  • 遍歷字符串
let str="hello";
for(let i of str){
  console.log(i);
}
//'h'
//'e'
//'l'
//'l'
//'o'
  • 遍歷類數(shù)組
function sum(){
  console.log(arguments)
}
sum(1,2,3,4,5)

arguments是一個(gè)類數(shù)組,可以用Array.from轉(zhuǎn)換成真實(shí)數(shù)組或可遍歷對(duì)象袱耽。但是據(jù)說性能不好,我們先用學(xué)到的for...of遍歷:

function sum(){
  let total=0; 
  for(let i of arguments){
    total+=i;
  }
  return total;
}
sum(1,2,3,4,5)//15
  • 遍歷Nodelist

補(bǔ)充Array.from() 和 Array.of()

Array.from()

MDN上面對(duì)Array.from()的定義是:

Array.from() 方法從一個(gè)類似數(shù)組或可迭代的對(duì)象中創(chuàng)建一個(gè)新的數(shù)組實(shí)例咒循。
Array.from()返回值是一個(gè)新的 Array据途;

語法

Array.from(arrayLike[, mapFn[, thisArg]])

  • 字符串
Array.from("HELLO");
//["H", "E", "L", "L", "O"]
  • Set和Map類型
let s = new Set(['foo', window]); 
Array.from(s); 
// ["foo", window]
let m = new Map([[1, 2], [2, 4], [4, 8]]);
Array.from(m); 
// [[1, 2], [2, 4], [4, 8]]
  • 類數(shù)組
    跟正文最后一個(gè)例子一樣,arguments是一個(gè)類數(shù)組(NodeList也是)叙甸,就可以用Array.from()轉(zhuǎn)成數(shù)組
function sum(){
  return Array.form(arguments).reduce((prev,next)=>prev+next
  ,0)
}
sum(1,2,3)
//6
帶其他參數(shù)
  • 自加
Array.from([1,2,3],x=>x+x);
//[2, 4, 6]
  • 生成0-100的數(shù)組
Array.from({length: 101}, (v, i) => i);
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99颖医,100]
Array.of()

在js中Array(7)生成的是[,,,,,,],Array(1,2,3)生成[1,2,3],但是我們用生成[7]這樣呢?在之前只能用直接量的方法[7]這樣直接寫,而ES6就提供了Array.of()讓我們可以創(chuàng)建一個(gè)具有可變數(shù)量參數(shù)的新數(shù)組實(shí)例裆蒸,而不考慮參數(shù)的數(shù)量或類型便脊。

Array.of(7);//[7]
Array.of(1,2,3)//[1,2,3]

參考:

for...in MDN
for...of MDN

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市光戈,隨后出現(xiàn)的幾起案子哪痰,更是在濱河造成了極大的恐慌,老刑警劉巖久妆,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晌杰,死亡現(xiàn)場離奇詭異,居然都是意外死亡筷弦,警方通過查閱死者的電腦和手機(jī)肋演,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來烂琴,“玉大人爹殊,你說我怎么就攤上這事〖楸粒” “怎么了梗夸?”我有些...
    開封第一講書人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長号醉。 經(jīng)常有香客問我反症,道長,這世上最難降的妖魔是什么畔派? 我笑而不...
    開封第一講書人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任铅碍,我火速辦了婚禮,結(jié)果婚禮上线椰,老公的妹妹穿的比我還像新娘胞谈。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開白布烦绳。 她就那樣靜靜地躺著悔叽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪爵嗅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,155評(píng)論 1 299
  • 那天笨蚁,我揣著相機(jī)與錄音睹晒,去河邊找鬼。 笑死括细,一個(gè)胖子當(dāng)著我的面吹牛伪很,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播奋单,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼锉试,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了览濒?” 一聲冷哼從身側(cè)響起呆盖,我...
    開封第一講書人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎贷笛,沒想到半個(gè)月后应又,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡乏苦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年株扛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片汇荐。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡洞就,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出掀淘,到底是詐尸還是另有隱情旬蟋,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布革娄,位于F島的核電站咖为,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏稠腊。R本人自食惡果不足惜躁染,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望架忌。 院中可真熱鬧吞彤,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至埋嵌,卻和暖如春破加,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背雹嗦。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來泰國打工范舀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人了罪。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓锭环,卻偏偏與公主長得像,于是被迫代替她去往敵國和親泊藕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子辅辩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容