我有一个数组和一个对象。
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”
答案 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方法