簡體   English   中英

將JSON提取到Javascript變量中

[英]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對象存在兩個問題:

  1. 它及其所有屬性都是默認的全局變量。 可能沒有興趣。

  2. 必須假設它在所有瀏覽器中都存在(現在已經存在)。 考慮一下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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM