Javascript 将对象复制到数组

Javascript 将对象复制到数组,javascript,arrays,json,list,object,Javascript,Arrays,Json,List,Object,我正在尝试将对象userinfo复制到数组中。当我尝试控制台记录新阵列时,我一直处于未定义状态。任何帮助都将不胜感激 JS: var JSONstring=[{ “名称”:“测试”, “财产”:{ “年龄”:“19r”, “用户信息”:{ “城市”:“达拉斯”, “州”:“德克萨斯州” } } }]; $(文档).ready(函数(){ var userinfo={}; 对于(var i=0;i

我正在尝试将对象
userinfo
复制到数组中。当我尝试控制台记录新阵列时,我一直处于未定义状态。任何帮助都将不胜感激

JS:

var JSONstring=[{
“名称”:“测试”,
“财产”:{
“年龄”:“19r”,
“用户信息”:{
“城市”:“达拉斯”,
“州”:“德克萨斯州”
}
}
}];
$(文档).ready(函数(){
var userinfo={};
对于(var i=0;i

实际上,您当前的代码中有几个问题:

  • 写入
    userinfo[user]
    是不正确的,如果你想访问
    userinfo
    对象的
    user
    属性,你需要给它一个字符串,比如
    userinfo[“user”]
    或者直接
    userinfo.user
  • 最后,您试图记录
    userinfo[0]
    ,这是
    未定义的
    
    因为
    userinfo
    对象
    而不是
    数组
    ,所以需要 将其更改为:
    console.log(userinfo.user[0])
  • 如果要在数组中存储
    user
    对象,应将
    push(i)
    替换为
    push(user)
演示:

我试图重构您的代码以使其有意义,以下是您需要的:

var JSONstring=[{
“名称”:“测试”,
“财产”:{
“年龄”:“19r”,
“用户信息”:{
“城市”:“达拉斯”,
“州”:“德克萨斯州”
}
}
}];
$(文档).ready(函数(){
var userinfo={};
对于(var i=0;i

userinfo[user]
没有什么意义,
user
不是未定义就是一个对象。对象键始终是字符串。因此,在您的示例中,对象类型存在一些问题。JSONstring变量是一个对象,它没有.length成员。您的userinfo“array”也是一个对象。请注意,变量名
JSONstring
极易误导,因为变量的值是数组,而不是字符串(包含JSON)。调用JavaScript对象“JSON”是一个(不幸的)常见错误。@FelixKling ok将保留该错误mind@Ken:NVM then:)为什么console.log现在是0?因为循环中需要
i
,我们应该
push(user)
,我编辑了我的答案。
var JSONstring = [{
  "name": "test",
  "properties": {
    "age": "19r",
    "userinfo": {
      "city": "Dallas",
      "state": "Texas"
    }
  }
}];

$(document).ready(function() {
  var userinfo = {};
  for (var i = 0; i < JSONstring.length; i++) {
    var user = JSONstring[i].properties.userinfo;
    if (user === undefined) {
      continue;
    } else if (userinfo[user] === undefined) {
      userinfo[user] = [];
      userinfo[user].push(i);
    } else {
      userinfo[user].push(i);
    }
  }
  console.log(userinfo[0]);
});