javascript
ecmascript-6
Jo Liss
sumber
sumber
Gunakan konstruktor untuk mengkloning Maps dan Set:
var clonedMap = new Map(originalMap)
var clonedSet = new Set(originalSet)
Map
harus diperlakukan sebagai tipe data abstrak, bukan sebagai objek Javascript. Karenanya kloning yang dalamMap
tidak masuk akal.Membuat Set baru melalui perulangan for lebih cepat daripada konstruktor Set. Hal yang sama berlaku untuk Maps, meskipun pada tingkat yang lebih rendah.
const timeInLoop = (desc, loopCount, fn) => { const d = `${desc}: ${loopCount.toExponential()}` console.time(d) for (let i = 0; i < loopCount; i++) { fn() } console.timeEnd(d) } const set = new Set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) const setFromForLoop = x => { const y = new Set() for (const item of x) y.add(item) return y } const map = new Map([['a', 1], ['b', 2], ['c', 3], ['d', 4], ['e', 5]]) const mapFromForLoop = x => { const y = new Map() for (const entry of x) y.set(...entry) return y } timeInLoop('new Set(set)', 1e5, () => new Set(set)) timeInLoop('setFromForLoop(set)', 1e5, () => setFromForLoop(set)) timeInLoop('new Map(map)', 1e5, () => new Map(map)) timeInLoop('mapFromForLoop(map)', 1e5, () => mapFromForLoop(map))
sumber
Set
(meskipun tidak untukMap
).