Extract keys from JavaScript object and use them as variables

PHP has a method called extractthat does exactly what I want to do here. Let's say I have an object that looks like this:

var data = {
    name: "Olly"
    age: 19
};

I want to run a type method extract(data)in order to then access the properties of this object, simply using nameand ageinstead of data.nameand data.age.

I did a little googling and found nothing.

+5
source share
3 answers

You can use something like this:

function myTestFunction() {
    var data = {
        name: "Olly",
        age: 19,
    };
    for (var key in data) {
        this[key] = data[key];
    }
    alert(name +" is "+ age +"!");
}
myTestFunction();

(Try here: 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();
+8

// :)

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'));
+1

It sounds like a c instruction.

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!"
0
source

All Articles