Javascript 对迭代嵌套对象感到困惑吗
因此,我有以下目标:Javascript 对迭代嵌套对象感到困惑吗,javascript,Javascript,因此,我有以下目标: { err: { message: 'Validation failed', name: 'ValidationError', errors: { username: { properties: [Object], message: 'Path `username` is required.', name: 'ValidatorError', kind: 'requ
{ err:
{ message: 'Validation failed',
name: 'ValidationError',
errors:
{ username:
{ properties: [Object],
message: 'Path `username` is required.',
name: 'ValidatorError',
kind: 'required',
path: 'username',
value: '' } } } }
我试图迭代err.errors
并将例如err.errors.username.message
推送到一个数组中:
for(var error in err.errors){
messages.push(error.message);
}
这样做只是将null推入我的消息
数组。所以为了排除故障,我尝试了console.log(typeof error)
它给我一个字符串
。这就是令人困惑的地方,因为当我在err.errors.username上调用typeof
时,它会输出对象
,但在循环内部调用它会生成字符串
这是怎么回事
您正在从对象访问key
,而对象是另一个对象
中的错误,因为在中将返回key->
用户名,因此您需要从该对象访问该键,然后从该用户名`对象访问消息
试试这个:
var obj={
错误:{
消息:“验证失败”,
名称:“ValidationError”,
错误:{
用户名:{
属性:[对象],
消息:“路径`username`是必需的。”,
名称:“ValidatorError”,
种类:'必需',
路径:“用户名”,
值:“”
},
密码:{
属性:[对象],
消息:“需要路径‘密码’。”,
名称:“ValidatorError”,
种类:'必需',
路径:“密码”,
值:“”
}
}
}
};
var消息=[];
for(对象错误中的变量错误){
messages.push(obj.err.errors[error].message);
}
警报(信息)代码>
您正在从对象访问key
,而对象是另一个对象
中的错误,因为在中将返回key->
用户名,因此您需要从该对象访问该键,然后从该用户名`对象访问消息
试试这个:
var obj={
错误:{
消息:“验证失败”,
名称:“ValidationError”,
错误:{
用户名:{
属性:[对象],
消息:“路径`username`是必需的。”,
名称:“ValidatorError”,
种类:'必需',
路径:“用户名”,
值:“”
},
密码:{
属性:[对象],
消息:“需要路径‘密码’。”,
名称:“ValidatorError”,
种类:'必需',
路径:“密码”,
值:“”
}
}
}
};
var消息=[];
for(对象错误中的变量错误){
messages.push(obj.err.errors[error].message);
}
警报(信息)代码>此处的问题for in
将为您提供键非数据tryfor of
或错误[错误]
此处的问题for in
将为您提供键非数据tryfor of
或错误[错误]尝试迭代obj.error.errors.username
var消息=[];
var obj={
错误:{
消息:“验证失败”,
名称:“ValidationError”,
错误:{
用户名:{
属性:[对象],
消息:“路径`username`是必需的。”,
名称:“ValidatorError”,
种类:'必需',
路径:“用户名”,
值:“”
}
}
}
}
for(obj.err.errors.username中的变量错误){
如果(错误==“消息”)
messages.push(obj.err.errors.username[error])
}
console.log(消息)
尝试迭代obj.err.errors.username
var消息=[];
var obj={
错误:{
消息:“验证失败”,
名称:“ValidationError”,
错误:{
用户名:{
属性:[对象],
消息:“路径`username`是必需的。”,
名称:“ValidatorError”,
种类:'必需',
路径:“用户名”,
值:“”
}
}
}
}
for(obj.err.errors.username中的变量错误){
如果(错误==“消息”)
messages.push(obj.err.errors.username[error])
}
console.log(messages)
messages.push(err.errors[error].message)代码>messages.push(err.errors[error].message)代码>