我正在尝试将对象userinfo
复制到数组中。当我尝试控制登录新数组时,我一直未定义。任何帮助将不胜感激!
JS:
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]);
});
答案 0 :(得分:2)
实际上,您当前的代码中存在一些问题:
userinfo[user]
不正确,如果您想访问user
对象的userinfo
属性,则需要为其添加userinfo["user"]
字符串或直接userinfo.user
}。userinfo[0]
undefined
因为userinfo
是object
,而不是array
将其更改为:console.log(userinfo.user[0])
。user
对象存储在数组中,则应将push(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) {
continue;
} else if (!userinfo.user) {
userinfo.user = [];
userinfo.user.push(user);
} else {
userinfo.user.push(user);
}
}
console.log(userinfo.user[0]);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
注意:强>
if块if (userinfo[user] === undefined)
中的条件可以简单地写为if(!userinfo.user)