Map.prototype.getOrInsert()

Baseline 2026
Newly available

Since February 2026, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

Phương thức getOrInsert() của các instance Map trả về giá trị tương ứng với khóa được chỉ định trong Map này. Nếu khóa không có mặt, nó chèn một entry mới với khóa và giá trị mặc định đã cho, rồi trả về giá trị được chèn.

Nếu việc tính toán giá trị mặc định tốn kém, hãy cân nhắc dùng Map.prototype.getOrInsertComputed() thay thế, vốn nhận một callback để tính toán giá trị mặc định chỉ khi thực sự cần.

Try it

const map = new Map([["bar", "foo"]]);
console.log(map.getOrInsert("bar", "default"));
// Expected output: "foo"

console.log(map.getOrInsert("baz", "default"));
// Expected output: "default"

Cú pháp

js
getOrInsert(key, defaultValue)

Tham số

key

Khóa của giá trị cần trả về từ đối tượng Map. Các khóa object được so sánh theo reference, không theo giá trị.

defaultValue

Giá trị cần chèn và trả về nếu khóa chưa có trong đối tượng Map.

Giá trị trả về

Giá trị được liên kết với khóa được chỉ định trong đối tượng Map. Nếu không tìm thấy khóa, defaultValue được chèn vào và trả về.

Mô tả

Phương thức getOrInsert() tương đương với đoạn code sau:

js
if (map.has(key)) {
  return map.get(key);
}
map.set(key, defaultValue);
return defaultValue;

Nó cũng tương tự pattern sau (ít đáng tin cậy hơn một chút nếu null hay undefined là các giá trị hợp lệ trong map của bạn):

js
map.set(key, map.get(key) ?? defaultValue);

Ví dụ

Multimap

Trong một map nơi mỗi khóa được ánh xạ đến một mảng giá trị, bạn có thể dùng getOrInsert() để đảm bảo rằng mảng tồn tại cho một khóa đã cho trước khi cố gắng push một giá trị mới vào mảng.

js
map.getOrInsert(key, []).push(value);

Áp dụng giá trị mặc định

Bạn có thể dùng getOrInsert() để đảm bảo rằng một khóa tồn tại trong map, ngay cả khi bạn hiện không cần giá trị của nó. Điều này thường dùng để chuẩn hóa đầu vào từ người dùng.

Hãy tưởng tượng bạn có một map về tùy chọn người dùng, và bạn muốn đảm bảo rằng một tùy chọn nhất định luôn được đặt thành giá trị mặc định nếu người dùng chưa chỉ định:

js
const options = readConfig();
options.getOrInsert("theme", "light");
options.getOrInsert("fontSize", 14);

// Later in your code, you can safely assume these options exist
document.body.dataset.theme = options.get("theme");

Đặc tả kỹ thuật

Thông số kỹ thuật
ECMAScript® 2027 Language Specification
# sec-map.prototype.getorinsert

Tương thích trình duyệt

Xem thêm