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
getOrInsertComputed(key, callback)
Tham số
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
callbackkhô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.
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> |