[英]Extract JSON into Javascript variables
我是javascript新手,這是一個新手問題:
在php中,有一個extract()方法可以從關聯數組中導入變量。 例如:
$var_array = array("color" => "blue",
"size" => "medium",
"shape" => "sphere");
extract($var_array);
// $color is a defined varible here with the value of "blue"
我想知道標准Javascript或流行的庫(例如jQuery或下划線)中是否存在對Javascript對象執行相同方法的方法。 我的意思是這樣的:
jsObject = {"color" : "blue",
"size" : "medium",
"shape" : "sphere"};
extract(jsObject); // Is there such a thing?
// Here, color is a defined variable
您可以執行以下操作:
Object.getOwnPropertyNames(obj).forEach(k => window[k] = obj[k]);
或限制新變量的范圍:
Object.getOwnPropertyNames(obj).forEach(k => this[k] = obj[k]);
您可以使用
function extract(jsObject){
for (var key in jsObject) {
window[key] = jsObject[key];
}
}
console.log(size) //medium
標准Javascript中沒有什么可以像這樣工作的,但是如果您使用ES6,則可以像這樣破壞對象
const obj = {
color: 'blue',
size: 'medium',
shape: 'sphere',
}
const { color, size, shape } = obj;
console.log(color, size, shape) // blue medium sphere
您可以使用Babel將您的代碼轉換為ES6。 如果您剛剛開始,那么現在對您來說可能有點高級,所以我建議您堅持使用直觀的方法,但是幾周后一定要檢查Babel。 它給您一些非常酷的東西。
使用window對象存在兩個問題:
它及其所有屬性都是默認的全局變量。 可能沒有興趣。
必須假設它在所有瀏覽器中都存在(現在已經存在)。 考慮一下Nodejs
你可以做:
for (var key in jsObject) {
eval('var ' + key + ' = ' + jsObject[key]);
}
試試這個,可能會有所幫助:
(function () {
var jsObject = {color: 'blue'};
// Dynamically assign to local variables
for (var key in jsObject) {
eval('var ' + key + ' = ' + jsObject[key]);
}
// Test locally
console.log(color);
})();
// Test globally
console.log(color);
結果:
'blue'
[error] color is not defined
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.