jsrosetta

Collections

Map

Map của Node.js (set/get/has/delete, for...of) so với map[K]V của Go, HashMap của Rust, Dictionary của Swift và HashMap của Java.

Phiên bản tối thiểu
Node.js ≥ 12.20Go ≥ 1.23Rust ≥ 1.58Swift ≥ 3.0Java ≥ 25
Đã chạy thử trên
Node.js 24.12.0Go 1.27.1Rust 1.98.1Swift 6.2.4Java 25.0.4.1

Code Node.js là ES module: lưu file .mjs hoặc đặt "type": "module" trong package.json.

Map trong Node.js là một class riêng với method set/get/has/delete. Go có map[K]V ngay trong cú pháp ngôn ngữ, không cần class hay method — truy cập bằng [], kiểm tra tồn tại bằng giá trị trả về thứ hai ("comma ok"). Rust có HashMap<K, V> trong thư viện chuẩn, Swift có Dictionary với cú pháp [K: V], Java có HashMap — cả ba đều không giữ thứ tự chèn khi duyệt, giống Go.

set, get, has, delete

const map = new Map()
map.set('foo', 'bar')
 
let found = map.has('foo')
console.log(found) // true
 
let item = map.get('foo')
console.log(item) // bar
 
map.delete('foo')
 
found = map.has('foo')
console.log(found) // false
 
item = map.get('foo')
console.log(item) // undefined

Duyệt qua map

const map3 = new Map()
map3.set('foo', 100)
map3.set('bar', 200)
map3.set('baz', 300)
 
for (const [key, value] of map3) {
  console.log(key, value)
}
// foo 100
// bar 200
// baz 300 (Map giữ đúng thứ tự chèn)

Khác biệt chính

Node.js Map Go map[K]V Rust HashMap Swift Dictionary Java HashMap
Kiểm tra tồn tại .has(key) value, ok := m[key] .contains_key(key) dict[key] != nil .containsKey(key)
Giá trị khi thiếu key undefined zero value của kiểu ("", 0, …) None (kiểu Option<&V>) nil (kiểu V?) null
Thứ tự duyệt giữ thứ tự chèn ngẫu nhiên không đảm bảo không đảm bảo không đảm bảo
Xoá key .delete(key) delete(m, key) .remove(key) .removeValue(forKey:) .remove(key)

Tham khảo: github.com/miguelmota/golang-for-nodejs-developers#maps