首頁 web前端 js教程 javascript中for/in循環及使用技巧_javascript技巧

javascript中for/in循環及使用技巧_javascript技巧

May 16, 2016 pm 03:41 PM
javascript 循環

JavaScript 支援不同類型的迴圈:

for - 循環程式碼區塊一定的次數

for/in - 循環遍歷物件的屬性

while - 當指定的條件為 true 時循環指定的程式碼區塊

do/while - 同樣當指定的條件為 true 時循環指定的程式碼區塊

1. in運算子:要求其左邊的運算數是一個字串,或可以被轉換為字串,右邊的運算數是一個物件或陣列。如果該運算子左邊的值是右邊物件的一個屬性名,則傳回true。

例如:

1

2

3

4

var point={x:1,y:2}; //对象直接量

var has_x="x" in point; //返回true

var has_z="z" in point; //返回false

var ts="toString" in point;//返回true,toString为继承方法

登入後複製

   2. for/in語句:文法,

for (variable in object)
                           statement;

      提供了一種遍歷物件屬性的方法。

例:

1

2

3

for(var prop in my_object) {

    document.write("name:"+prop+";value:"+my_object[prop],"<br>");

  }

登入後複製

      javascript的陣列是一種特殊的對象,因此for/in循環可以像列舉物件屬性一樣枚舉數組下標。

可以把一個物件的所有屬性名稱複製到一個陣列中,

例:

1

2

3

4

5

var o= {x:1,y:2,z:3};

  var a=new Array();

  var i=0;

  for (a[i++] in o)

  ;//空语句,用于初始化数组

登入後複製

    3. in運算子與for/in語句不同,for/in語句in的左邊可以是宣告一個變數的var語句,陣列的一個元素或是物件的一個屬性,不能使字串。

    4. 陣列常用的存取屬性運算子是“[]”,而不是“.”。 使用「[]」來命名屬性名師字串值,是動態的,可以在執行時改變,而不是一個識別符「.」。

例:

1

2

3

4

5

6

7

8

var stock_name= get_stock_name_from_user();//从用户处获取股票名

  var share= get_number_of_shares();//得到股票数量

  portfolio[stock_name]= share;//动态地创建数组股票,并为每支股票赋值

  将该例子与for/in循环一起使用,当用户输入了他的投资组合,可以计算当前总值

  var value= 0;

  for (stock in portfolio) {

    value +=get_share_value(stock)*portfolio[stock];

  }

登入後複製

stock訪問的是每支股票的名字。     

portfolio[stock]訪問的是每支股票的數量。

for-in循環

功能:遍歷物件屬性,把屬性名稱和屬性值都提出來

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

var obj = {

 "key1":"value1",

 "key2":"value2",

 "key3":"value3"

};

function EnumaKey(){

 for(var key in obj ){

  alert(key);

 }

}

function EnumaVal(){

 for(var key in obj ){

  alert(obj[key]);

 }

}

EnumaKey(obj)

//key1 key2 key3

EnumaVal(obj)

//value1 value2 value3

登入後複製

陣列也可以這樣遍歷,但不推薦,因為不能保證順序,而且如果在Array的原型上添加了屬性,這個屬性也會被遍歷出來。

for-in迴圈應該用在非陣列物件的遍歷上,使用for-in進行迴圈也稱為「枚舉」。

從技術上將,你可以使用for-in循環數組(因為JavaScript中數組也是物件),但這是不建議的。因為如果數組物件已被自訂的功能增強,就可能發生邏輯錯誤。另外,在for-in中,屬性列表的順序(序列)是不能保證的。所以最好陣列使用正常的for循環,物件使用for-in循環。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何使用WebSocket和JavaScript實現線上語音辨識系統 如何使用WebSocket和JavaScript實現線上語音辨識系統 Dec 17, 2023 pm 02:54 PM

如何使用WebSocket和JavaScript實現線上語音辨識系統

WebSocket與JavaScript:實現即時監控系統的關鍵技術 WebSocket與JavaScript:實現即時監控系統的關鍵技術 Dec 17, 2023 pm 05:30 PM

WebSocket與JavaScript:實現即時監控系統的關鍵技術

如何使用WebSocket和JavaScript實現線上預約系統 如何使用WebSocket和JavaScript實現線上預約系統 Dec 17, 2023 am 09:39 AM

如何使用WebSocket和JavaScript實現線上預約系統

如何利用JavaScript和WebSocket實現即時線上點餐系統 如何利用JavaScript和WebSocket實現即時線上點餐系統 Dec 17, 2023 pm 12:09 PM

如何利用JavaScript和WebSocket實現即時線上點餐系統

JavaScript與WebSocket:打造高效率的即時天氣預報系統 JavaScript與WebSocket:打造高效率的即時天氣預報系統 Dec 17, 2023 pm 05:13 PM

JavaScript與WebSocket:打造高效率的即時天氣預報系統

簡易JavaScript教學:取得HTTP狀態碼的方法 簡易JavaScript教學:取得HTTP狀態碼的方法 Jan 05, 2024 pm 06:08 PM

簡易JavaScript教學:取得HTTP狀態碼的方法

Java函數中遞歸呼叫有哪些替代方案? Java函數中遞歸呼叫有哪些替代方案? May 05, 2024 am 10:42 AM

Java函數中遞歸呼叫有哪些替代方案?

lambda表達式跳出循環 lambda表達式跳出循環 Feb 20, 2024 am 08:47 AM

lambda表達式跳出循環

See all articles