1. 程式人生 > >For的衍生對象

For的衍生對象

結構 接收 out 函數返回 傳遞 const mini ike word

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...inforEach() ,並支持新的叠代協議。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(集合) 有多個 12 ,但輸出的只有 12


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)。


For的衍生對象