1. 程式人生 > >For的衍生物件

For的衍生物件

For的衍生物件:

 for in語句:

for...in 語句用於遍歷陣列或者物件的屬性(對陣列或者物件的屬性進行迴圈操作)。

for...in 語句用於對陣列或者物件的屬性進行迴圈操作。

for ... in 迴圈中的程式碼每執行一次,就會對陣列的元素或者物件的屬性進行一次操作。

語法:

for (變數 in 物件)
{
    在此執行程式碼
}

“變數”用來指定變數,指定的變數可以是陣列元素,也可以是物件的屬性。

例項:

使用 for ... in 迴圈遍歷陣列。

<html>
<body>

<script type="text/javascript">
var x
var mycars = new Array()
mycars[0] = "Saab"
mycars[1] = "Volvo"
mycars[2] = "BMW"

for (x in mycars)
{
document.write(mycars[x] + "<br />")
}
</script> </body> </html>

for of語句:

for...of 語句建立一個迴圈來迭代可迭代的物件。在 ES6 中引入的 for...of 迴圈,以替代 for...in 和 forEach() ,並支援新的迭代協議。for...of 允許你遍歷 Arrays(陣列), Strings(字串), Maps(對映), Sets(集合)等可迭代的資料結構等。

 
 

語法

 
 
for (variable of iterable) {
    statement
}
 
 
  • variable:每個迭代的屬性值被分配給該變數。
  • iterable:一個具有可列舉屬性並且可以迭代的物件。
 
 

用例

 
 

我們來探討一些用例。

 
 

Arrays(陣列)

 
 

Arrays(陣列)就是類列表(list-like)物件。陣列原型上有各種方法,允許對其進行操作,比如修改和遍歷等操作。下面手在一個數組上進行的 for...of 操作:

 
 
// array-example.js
const iterable = ['mini', 'mani', 'mo'];   for (const value of iterable) { console.log(value); }   // Output: // mini // mani // mo
 
 

其結果就是打印出 iterable 陣列中的每一個值。

 
 

Maps(對映)

 
 

Map 物件就是儲存 key-value(鍵值) 對。物件和原始值可以用作 key(鍵)或 value(值)。Map 物件根據其插入方式迭代元素。換句話說, for...of 迴圈將為每次迭代返回一個 key-value(鍵值) 陣列。

 
 
// map-example.js
const iterable = new Map([['one', 1], ['two', 2]]);   for (const [key, value] of iterable) { console.log(`Key: ${key} and Value: ${value}`); }   // Output: // Key: one and Value: 1 // Key: two and Value: 2
 
 

Set(集合)

 
 

Set(集合) 物件允許你儲存任何型別的唯一值,這些值可以是原始值或物件。 Set(集合) 物件只是值的集合。 Set(集合) 元素的迭代基於其插入順序。 Set(集合) 中的值只能發生一次。如果您建立一個具有多個相同元素的 Set(集合) ,那麼它仍然被認為是單個元素。

 
 
// set-example.js
const iterable = new Set([1, 1, 2, 2, 1]);   for (const value of iterable) { console.log(value); } // Output: // 1 // 2
 
 

儘管我們的 Set(集合) 有多個 1 和 2 ,但輸出的只有 1 和 2 。

 
 

String(字串)

 
 

字串用於以文字形式儲存資料。

 
 
// string-example.js
const iterable = 'javascript';
 
for (const value of iterable) { console.log(value); }   // Output: // "j" // "a" // "v" // "a" // "s" // "c" // "r" // "i" // "p" // "t"
 
 

這裡,對字串執行迭代,並打印出每個索引上的字元。

 
 

Arguments Object(引數物件)

 
 

把一個引數物件看作是一個類陣列(array-like)物件,並且對應於傳遞給函式的引數。這是一個用例:

 
 
// arguments-example.js
function args() { for (const arg of arguments) { console.log(arg); } }   args('a', 'b', 'c'); // Output: // a // b // c
 
 

如前所述,當呼叫函式時,arguments 會接收傳入 args() 函式的任何引數。所以,如果我們傳遞 20 個引數給 args() 函式,我們將打印出 20 個引數。

Generators(生成器)

 
 

生成器是一個函式,它可以退出函式,稍後重新進入函式。

 
 
// generator-example.js
function* generator(){ yield 1; yield 2; yield 3; };   for (const g of generator()) { console.log(g); }   // Output: // 1 // 2 // 3
 
 

function* 定義了一個生成器函式,該函式返回生成器物件(Generator object)。