摘要:和在數組和對象中的區別在數組中的用法打印出來的是打印出來的是下標在對象中的用法打印出來的是,,打印出來的是,這是因為在中沒有規定默認的屬性解決辦法使用方法將對象的鍵名生成一個數組,然后遍歷這個數組。另一個方法是使用函數將對象重新包裝一下。
for of 和 for in 在數組和對象中的區別 在數組中的用法:
const arr = [2, 3, 5, 4, 5, 2, 2];
for(let i of arr){
console.log(i) //打印出來的是value 2,3,5,4,2,2
}
for(let i in arr){
console.log(i) //打印出來的是下標 0,1,2,3,4,5,6
}
const obj = {"a":1,"b":2,"c":3}
for(let i in obj){
console.log(i) //打印出來的是key a,b,c
}
for(let i of obj){
console.log(i) //打印出來的是obj is not iterable,這是因為在es6中object沒有規定默認的屬性iterable
}
解決辦法:
使用Object.keys方法將對象的鍵名生成一個數組,然后遍歷這個數組。
for (let i of Object.keys(obj)) {
console.log(key + ": " + obj[key]);
}
另一個方法是使用 Generator 函數將對象重新包裝一下。
function* entries(obj) {
for (let key of Object.keys(obj)) {
yield [key, obj[key]];
}
}
for (let [key, value] of entries(obj)) {
console.log(key, "->", value);
}
// a -> 1
// b -> 2
// c -> 3
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/108188.html
摘要:通過生成器創建的迭代器也是可迭代對象,因為生成器默認會為屬性賦值。我們可以用來訪問對象的默認迭代器,例如對于一個數組獲得了數組這個可迭代對象的默認迭代器,并操作它遍歷了數組中的元素。 ES6 新的數組方法、集合、for-of 循環、展開運算符(...)甚至異步編程都依賴于迭代器(Iterator )實現。本文會詳解 ES6 的迭代器與生成器,并進一步挖掘可迭代對象的內部原理與使用方法 ...
摘要:一個對象如果要有可被循環調用的接口,就必須在的屬性上部署遍歷器生成方法原型鏈上的對象具有該方法也可。阮大神案例上面代碼是一個類部署接口的寫法。屬性對應一個函數,執行后返回當前對象的遍歷器對象。 最近看阮一峰阮大神的ES6,剛剛看到Iterator和for...of循環這一章,小作筆記跟大家略微分享一下,不足之處還望大家多多指正 Iterator(遍歷器)就是一種機制;任何數據結構只要是...
摘要:前言又稱提供一個全新的迭代器的概念,它允許我們在語言層面上定義一個有限或無限的序列。后者可以被用來幫助我們理解迭代器。但是當我們使用迭代器時,這個問題就迎刃而解了。是中的新語法,用來配合迭代器。這是因為數組的迭代器只返回其中預期的元素。 前言 EcmaScript 2015 (又稱ES6)提供一個全新的迭代器的概念,它允許我們在語言層面上定義一個(有限或無限的)序列。 暫時先拋開它...
摘要:引用自可迭代對象和迭代器不以規矩,不成方圓為了使某個對象成為可迭代對象象,它必須實現方法,也就是說,它得有一個是的屬性。的遍歷,絕對應該用。 pseudo 英 [sju:d??] 美 [su:do?]adj.假的,虛偽的n.[口]假冒的人,偽君子 pseudo-array 英 [sju:d???re?] 美 [sju:d???re?][計] 偽數組 jQuery 對象是偽數組 兩個...
摘要:起源何為迭代器迭代器是被設計專用于迭代的對象,帶有特定接口。所有的迭代器對象都擁有方法,會返回一個結果對象。這個知名符號定義了為指定對象返回迭代器的函數。接下來被調用,迭代器結果對象的屬性被讀出并放入了變量。 起源 何為迭代器? 迭代器是被設計專用于迭代的對象,帶有特定接口。所有的迭代器對象都擁有 next() 方法,會返回一個結果對象。該結果對象有兩個屬性:對應下一個值的 value...
閱讀 2188·2021-11-15 11:38
閱讀 1151·2021-09-06 15:02
閱讀 3379·2021-08-27 13:12
閱讀 1353·2019-08-30 14:20
閱讀 2389·2019-08-29 15:08
閱讀 636·2019-08-29 14:08
閱讀 1722·2019-08-29 13:43
閱讀 1464·2019-08-26 12:11