简体   繁体   中英

Referencing a JavaScript Object

Given the following object, how would I dynamically access both levels of data?

var object = {
    "one": {
        "0": "foo",
        "1": "foo foo",
        "2": "foo foo foo",
        "3": "foo foo foo foo",
        "4": "foo foo foo foo foo"
    },
    "two": {
        "0": "bar",
        "1": "bar bar",
        "2": "bar bar bar",
        "3": "bar bar bar bar",
        "4": "bar bar bar bar bar"
    }
};

Shouldn't I be able to do something along the lines of:

var outer = "one",
    inner = "3";

console.log(object[outer][inner]);

And have the output be "foo foo foo foo"?

Yes. And it does.


$ cat so2.js
var object = {
  "one": {
    "0": "foo",
    "1": "foo foo",
    "2": "foo foo foo",
    "3": "foo foo foo foo",
    "4": "foo foo foo foo foo"
  },
  "two": {
    "0": "bar",
    "1": "bar bar",
    "2": "bar bar bar",
    "3": "bar bar bar bar",
    "4": "bar bar bar bar bar"
  }
};

var outer = "one", inner = "3";

console.log(object[outer][inner]);

$ node so2.js foo foo foo foo

You could try out using the index, but first you need to get the index of the keys "one","two" . Something like :

object[Object.keys(object)[0]][1]     // "foo foo"
object[Object.keys(object)[1]][1]     // "bar bar"

Here is the code for accessing all the values as per your json object :

for(var first in object)
{
    for(var second in object[first])
    {
        console.log(object[first][second]);
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM