javascript
JavaScript(循环)
JavaScript的循環(huán)有兩種,一種是for 循環(huán),通過初始條件,結(jié)束條件和遞增條件來循環(huán)執(zhí)行語句塊:
var x = 0;
var i;
for(i=1; i <=10000; i++){
x = x +i;
}
分析一下for循環(huán)的控制條件:
i=1 這是初始條件,將變量i置為1;
i <=10000 這是判斷條件,滿足時(shí)就繼續(xù)循環(huán),不滿足就退出循環(huán)。
i ++ 這是每次循環(huán)后的條件,由于每次循環(huán)后變量i 都會(huì) 加1,因此它終將在若干次循環(huán)后不滿足判斷條件 i <=10000而退出循環(huán)。
for 循環(huán)最常用的地方是利用索引來遍歷數(shù)組。
var arr=['Apple','Google','Microsoft'];
var i, x;
for(i=0;i<arr.length;i++){
x=arr[i];
alert(x)
}
for循環(huán)的3個(gè)條件都是可以省略的,如果沒有退出循環(huán)的判斷條件,就必須使用break語句退出循環(huán),否則就是死循環(huán):
for.......in
for 循環(huán)的一個(gè)變體是for....in 循環(huán),他可以把一個(gè)對(duì)象的所有屬性一次循環(huán)出來。
var o = {
name:'Jack,
age:20,
city:'Beijing'
}
for(var key in o){
alert(Key) //"name" "age","city"
}
要過濾掉對(duì)象繼承的屬性,用hasOwnProperty()來實(shí)現(xiàn):
var o = {
name: 'Jack',
age: 20,
city: 'Beijing'
};
for (var key in o) {
if (o.hasOwnProperty(key)) {
alert(key); // 'name', 'age', 'city'
}
}
由于Array也是對(duì)象,而它的每個(gè)元素的索引被視為對(duì)象的屬性,因此,for ... in循環(huán)可以直接循環(huán)出Array的索引:
var a = ['A','B','C'];
for(var i in a){
alert(i); // '0' '1' '2'
alert(a[i]); // ‘A’,'B','C'
注意: for ... in對(duì)Array的循環(huán)得到的是String而不是Number。
}
Map和Set
JavaScript的默認(rèn)對(duì)象表示方式{} 可以視為其語音中的Map或Dictionary 的數(shù)據(jù)結(jié)構(gòu),即一組鍵值對(duì)。
但是JavaScript的對(duì)象有個(gè)小問題,就是鍵必須是字符串。但實(shí)際上Number或者其他數(shù)據(jù)類型作為鍵也是非常合理的。
Map 是一組鍵對(duì)的結(jié)構(gòu),具有極快的查找速度。
var name =['Michael','Bob','Tracy'];
var scores =[95,75,85];
給定一個(gè)名字,要查找對(duì)應(yīng)的成績(jī),就先要在names中找到對(duì)應(yīng)的位置,再從scores取出對(duì)應(yīng)的成績(jī),Array越長,耗時(shí)越長。
如果用Map實(shí)現(xiàn),只需要一個(gè)“名字”-“成績(jī)”的對(duì)照表,直接根據(jù)名字查找成績(jī),無論這個(gè)表有多大,查找速度都不會(huì)變慢
var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);
m.get('Michael'); // 95
初始化Map需要一個(gè)二維數(shù)組,或者直接初始化一個(gè)空Map。
var m = new Map(); // 空Map
m.set('Adam', 67); // 添加新的key-value
m.set('Bob', 59);
m.has('Adam'); // 是否存在key 'Adam': true
m.get('Adam'); // 67
m.delete('Adam'); // 刪除key 'Adam'
m.get('Adam'); // undefined
Set
Set 和Map 類似,也是一個(gè)組合key的集合,但不存儲(chǔ)value.由于key不能重復(fù),所以,在Set中,沒有重復(fù)的key。
要?jiǎng)?chuàng)建一個(gè)Set,需要提供一個(gè)Array 作為輸入,或直接創(chuàng)建一個(gè)空Set:
var s1= new Set(); // 空Set
var s2 =new Set([1,2,3]); // 含1,2,3
重復(fù)元素在Set 中自動(dòng)被過濾。
var s= new Set([1,2,3,3,'3']);
s: //Set{1,2,3,'3'}
注意數(shù)字3和字符串'3'是不同的元素。
通過add(key)方法可以添加元素到Set中,可以重復(fù)添加,但不會(huì)有效果:
>>>s.add(4)
>>>s
?{1,2,3,4}
>>>s.add(4)
>>>s
{1,2,3,4}
? ? 通過delete(key)方法可以刪除元素:
?var s=new Set([1,2,3])
?s://Set{1.2.3}
? ? ? ?s.delete(3);
? ? ? ?s://Set{1,2}
轉(zhuǎn)載于:https://www.cnblogs.com/manxin/p/5519134.html
總結(jié)
以上是生活随笔為你收集整理的JavaScript(循环)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDU 5693 D Game 区间dp
- 下一篇: 第一个Java应用