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