[英]Adding new value to javascript associative array “on the fly” when trying to get value by not existing key
嘗試通過不存在的鍵獲取值時,可以“即時”創建並返回關聯數組的新元素嗎?
a = {};
a[5]; // return "fezzes"; a = {5: "fezzs"}
a[9]; // return "jtte"; a = {5: "fezzs", 9: "jtte"}
處理未定義對象屬性的最佳方法是使用Proxy對象( 此答案涵蓋了類似的用例):
a = { 1 : "hello" };
console.log(a[1]); //hello
console.log(a[2]); //undefined
var handler = {
get: function(target, name){
if (!(name in target)) {
target[name] = "world";
}
return target[name];
}
};
var p = new Proxy(a, handler);
console.log(a[1]); //hello
console.log(a[2]); //world
代理是(不錯的)ES6功能。 Firefox自版本18開始支持它們,而在Chrome(和Node.js)中,您必須啟用和聲標志。
您可以使用如下所示的自定義getter方法“ getProp”創建對象,並且可以根據需要訪問不存在的鍵,但是請確保不存在的鍵需要的默認值是什么
var t = Object.create({},{
getProp:{
enumerable: false,
value:function(a){
if(!this[a])this[a] = 'defaultValue';
return this[a];
}
}
});
淘汰
t.getProp('nonExistingKey') // return 'defaultValue', t return {'nonExistingKey': 'defaultValue'}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.