new Set()
के लिए सुरक्षित कोड लग सकता है जैसे:ES6: सेट/मैप पुनरावृत्ति के दौरान सेट/मानचित्र से तत्वों को हटाना खतरनाक है?
let items = [];
for (let item of set)
if (isBad(item))
items.push(item);
for (let item of items)
set.delete(item)
मैं करने के लिए कोड को आसान बनाने में कर सकते हैं:
for (let item of set)
if (isBad(item))
set.delete(item);
new Map()
के लिए
सुरक्षित कोड लग सकता है जैसे:
let keys = [];
for (let [key, val] of map)
if (isBadKey(key) || isBadValue(val))
keys.push(key);
for (let key of keys)
map.delete(key)
मैं करने के लिए कोड को आसान बनाने में कर सकते हैं :
for (let [key, val] of map)
if (isBadJey(key) || isBadValue(val))
map.delete(key)
क्या होगा यदि सेट() 'बाइनरी पेड़ के रूप में लागू किया गया हो? नोड को हटाने से वृक्ष फिर से संतुलन हो सकता है। क्या यह इटरेटर ऑपरेशन को नुकसान पहुंचाता है? – gavenkoa
यह नहीं है। Spec के अनुसार - अंदर [सेट] (https://tc39.github.io/ecma262/#sec-set-iterable) एक [सूची] की तरह अधिक है (https://tc39.github.io/ecma262/#sec -सूची-और-रिकॉर्ड-विनिर्देश-प्रकार): 'सेट सेट [[SetData]] आंतरिक स्लॉट को एक नई खाली सूची में सेट करें।' – Kiril
मुझे सूची की अवधि में 'सेट' का विवरण दिखाई देता है। तो क्या यह निष्पक्ष धारणा है कि 'सेट' 'ओ (लॉग 2 (आकार)) 'समय' में वास्तव में' ओ (आकार) 'में' हटाएं '/ 'add' /' है' है? – gavenkoa