怎麼看js中資料結構有沒有部署了Iterator介面的?

時間 2021-06-01 06:15:21

1樓:公冶

訪問資料原型中的 Symbol.iterator ,如果存在,那麼他就部署了Iterator介面。

比如:const a = 123; a.__proto__[Symbol.iterator]; // undefined

const b = '123'; b.__proto__[Symbol.iterator]; // [Symbol.iterator]()

const c = [1, 2, 3]; c.__proto__[Symbol.iterator]; // values()

const d = ;

d.__proto__[Symbol.iterator]; // undefined

從上面可以看出,數字和物件都沒有部署Iterator介面,字串和陣列都部署了Iterator介面。

手動實現物件的Iterator介面1:

const obj = {

name: 'zhangsan',

age: 20,

slogan: '好好學習,天天長胖',

[Symbol.iterator]: function () {

const arr = [this.name, this.age, this.slogan]

let index = 0

return {

next() {

let r = {

value: arr[index],

done: index++ >= arr.length

return r

let arr = Array.from(obj)

console.log(arr)

手動實現物件的Iterator介面2:【使用生成器函式】

const obj = {

name: 'zhangsan',

age: 20,

slogan: '好好學習,天天長胖',

[Symbol.iterator]: function * () {

const arr = [this.name, this.age, this.slogan]

for (let item of arr) {

yield item

let arr = Array.from(obj)

console.log(arr)

2樓:魯小夫

首先 Array.from() 並不是那麼簡單。

其次, 然後乙個 object 是不是 iterable,看它有沒有 Symbol.iterator 方法

有沒有三維的資料結構?

Ivony 我覺得這個問題下面的答案都跑偏了,事實上單連通鏈本來就是樹的一種,而陣列和單鏈表只是單連通鏈的儲存方式而已。所以根本就不存在什麼一維二維,空間維度是幾何上的定義,和圖一毛錢關係沒有。如果說陣列和單鏈表是一維的,那麼雜湊表是幾維的?能表示這種資料結構的空間維度下限這本來就不是乙個良好的定義...

資料結構中的時間複雜度和空間複雜度有沒有直接的關係?

1.在絕大多數情況下,演算法的時間複雜度不會低於空間複雜度 2.為什麼在一段時間內學習到的實現同樣目標演算法中,二者似乎矛盾對立?因為如果A演算法在時空上都優秀於B演算法,我覺得你不會去記B演算法就醬 不用很長各種各樣的論述,你記住幾點 其實只要記住最後一點就可以了 1,完成乙個既定目標的任意演算法...

剛學C語言,請問有沒有什麼C C 和資料結構好的教材?另外想深入的話還學什麼比較好?

鹹韭菜 好的C教材 C primer plus 好的c 教材 c primer 沒有plus 第五版,effective c 好的資料結構教材 大話資料結構 對初學者非常友好 機械工業出版社翻譯的那本黑皮的資料結構與演算法分析不錯。個人感覺機械工業出版社翻譯的計算機相關書質量都挺好 想深入計算機相關...