Map.prototype.getOrInsertComputed()

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 getOrInsertComputed() 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 được tính toán từ một callback đã cho, rồi trả về giá trị được chèn.

Dùng phương thức này thay vì Map.prototype.getOrInsert() khi giá trị mặc định tốn kém để tính toán, và bạn muốn tránh tính toán nó trừ khi thực sự cần.

Try it

const map = new Map([["bar", "foo"]]);
const defaultCreator = (key) => `default for ${key}`;

console.log(map.getOrInsertComputed("bar", defaultCreator));
// Expected output: "foo"

console.log(map.getOrInsertComputed("baz", defaultCreator));
// Expected output: "default for baz"

Cú pháp

js
getOrInsertComputed(key, callback)

Tham số

key

Khóa của phần tử 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ị.

callback

Một hàm trả về giá trị cần chèn và trả về nếu khóa chưa có trong đối tượng Map. Hàm được gọi với đối số sau:

key

Cùng khóa đã được truyền vào getOrInsertComputed().

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, kết quả của callback(key) được chèn vào và trả về.

Ngoại lệ

TypeError

Ném ra nếu callback không thể gọi được.

Ví dụ

Tránh tính toán giá trị mặc định không cần thiết

Khi dùng Map.prototype.getOrInsert(), giá trị mặc định được tính toán mỗi lần, ngay cả khi không cần thiết. Với getOrInsertComputed(), giá trị mặc định chỉ được tính toán khi cần.

js
const map = new Map([["bar", "foo"]]);
const defaultCreator = (key) => {
  console.log(`Creating default for ${key}`);
  return `default for ${key}`;
};

map.getOrInsert("bar", defaultCreator("bar")); // Logs "Creating default for bar"
map.getOrInsertComputed("bar", defaultCreator); // No log

Đặc tả kỹ thuật

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

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

Xem thêm