[英]Extract keys and values from object via an array of strings in javascript
[英]Extract keys from JavaScript object and use as variables
PHP中有一個名為extract
的方法,它完全符合我想要做的。 假設我有一個看起來像這樣的對象:
var data = {
name: "Olly"
age: 19
};
我想運行像extract(data)
這樣的方法,這樣我就可以通過使用name
和age
而不是data.name
和data.age
來訪問該對象中的屬性。
我做了一些谷歌搜索,找不到任何東西。
你可以使用這樣的東西:
function myTestFunction() {
var data = {
name: "Olly",
age: 19,
};
for (var key in data) {
this[key] = data[key];
}
alert(name +" is "+ age +"!");
}
myTestFunction();
(試試這里: http : //jsfiddle.net/dHDxd/3/ )
甚至可以使用window[key] = data[key]
將它們導出到全局命名空間。 無論如何,要非常小心,因為破壞全局命名空間/覆蓋其他東西等的風險非常高。
extract()
function extract(data, where) {
for (var key in data) {
where[key] = data[key];
}
}
function runTest() {
var myData = { name: "Olly", age: 19, };
extract(myData, this);
alert(name +" is "+ age +"!");
}
runTest();
這里是更通用的/多級/循環命名空間提取器:)
function extract(rootObject, key) {
var parts = key.split('.');
var currentKey = parts.shift();
return parts.length > 0 ? extract(rootObject[currentKey], parts.join('.')) : rootObject[currentKey];
}
var myObject = { a: { b: { c: 7 }}};
console.log(extract(myObject, 'a.b.c'));
console.log(extract(myObject, 'a'));
看起來它就像“with”語句。
var data = {
name: "Olly",
age: 19,
};
with(data){
alert(name +" is "+ age +"!"); //"Olly is age 19!"
name = "Charlie";
age = 28;
alert(data.name +" is "+ data.age +"!"); //"Charlie is age 28!"
}
alert(data.name +" is "+ data.age +"!"); //"Charlie is age 28!"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.