将 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 或 underscore 等流行库中是否有方法对 Javascript 对象执行相同的操作。我的意思是这样的:
jsObject = {"color" : "blue",
"size" : "medium",
"shape" : "sphere"};
extract(jsObject); // Is there such a thing?
// Here, color is a defined variable
您可以使用
function extract(jsObject){
for (var key in jsObject) {
window[key] = jsObject[key];
}
}
console.log(size) //medium
你可以这样做:
Object.getOwnPropertyNames(obj).forEach(k => window[k] = obj[k]);
或者限制新变量的范围:
Object.getOwnPropertyNames(obj).forEach(k => this[k] = obj[k]);
标准 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 对象有 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
我是 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 或 underscore 等流行库中是否有方法对 Javascript 对象执行相同的操作。我的意思是这样的:
jsObject = {"color" : "blue",
"size" : "medium",
"shape" : "sphere"};
extract(jsObject); // Is there such a thing?
// Here, color is a defined variable
您可以使用
function extract(jsObject){
for (var key in jsObject) {
window[key] = jsObject[key];
}
}
console.log(size) //medium
你可以这样做:
Object.getOwnPropertyNames(obj).forEach(k => window[k] = obj[k]);
或者限制新变量的范围:
Object.getOwnPropertyNames(obj).forEach(k => this[k] = obj[k]);
标准 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 对象有 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