在另一个数组中嵌套对象

时间:2012-03-02 04:35:14

标签: javascript arrays

我有一个数组和一个对象。

var myObj = { "abc": 200, "xyz": 300};
vay myArray = ["one", "two"]

我想在“one”中接下来myObj的值。

所以myArray [0]会返回对象数据 -

console.log(myArray)看起来像。

-"one"
    *Object
            *abc:200
            *xyz:300
-"two"

我尝试使用push将myObj添加到myArray [0],但它没有用。 任何建议。

更新
我的代码现在看起来像这样,也许这会帮我正确地问:

var allData = {
user1:[userData]}

每次调用函数时都会运行。

userData第一次是ex:{name:bob, id:123}{name:dave, id:456}第二次是函数运行。

但如果我执行了console.log{allData),我只会看到最后一个userDat对象。我希望每次使用该功能时都添加到user1,以便我可以基本上执行以下allData.user1[1].name;并获取“dave”

3 个答案:

答案 0 :(得分:0)

您似乎要求提供以下结构:

var myArray = [
                { "one" : { "abc": 200, "xyz": 300} },
                "two"
              ];

即,数组中的第一个元素成为具有一个名为“one”的属性的对象,该属性引用对象{ "abc": 200, "xyz": 300}。数组中的第二个元素仍然只是一个字符串,“两个”。

要访问“abc”属性,您需要myArray[0]["one"]["abc"]myArray[0].one.abc。这看起来很笨拙,也许根本不是你想要的,但正如我所说的那样,你似乎要求它。

如果对象和数组都已存在,如问题所示,并且您希望使用数组元素0的当前值作为对象中的键,则可以执行此操作:

var myObj = { "abc": 200, "xyz": 300},
    myArray = ["one", "two"];

var tempObj = {};
tempObj[myArray[0]] = myObj;
myArray[0] = tempObj;

在我看来,一个更明智的结构将是:

var myObj = {
       "one" : { "abc": 200, "xyz": 300 },
       "two" : null
};

这样您就可以简单地说myObj["one"]["abc"]myObj.one.abc

答案 1 :(得分:0)

我假设您希望它是一种通用方法(不使用任何硬编码值),在这种情况下请尝试:

    var myObj = { "abc": 200, "xyz": 300}; 
    var myArray = ["one", "two"];
    var one = myArray[0];
    var temp = {};
    temp[one] = myObj;
    myArray[0] = temp;
    console.log(myArray);

答案 2 :(得分:0)

[{     “abc”:200,     “xyz”:300     }, “二”] 要么 [{“one”:{         “abc”:200,         “xyz”:300     }},     “二”] 您的 myArray [0]是一个String,没有push方法