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
将为您提供键非数据try
for of
错误[错误]
此处的问题
for in
将为您提供键非数据try
for 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)