当我调用ajax POST请求时,我会返回一个带有任何验证错误的JSON数组。以下是回复的示例:
{
password: [
"The password confirmation does not match"
],
username: [
"A username is required",
"Your username must be at least 5 characters long."
]
}
如何将其缩小以获取错误消息的数组?我的最终目标是将每条消息推送到div中。我可以做的是遍历密码中的每个消息,然后是用户名,然后是电子邮件等...但我想看看是否有其他方法或更好的方法来做到这一点。
答案 0 :(得分:0)
您应该使用Object.keys
遍历响应中的所有键("密码"以及"用户名"在您的示例中)并将其内容合并为单个输出阵列。类似的东西:
var data = {
password: [
"The password confirmation does not match"
],
username: [
"A username is required",
"Your username must be at least 5 characters long."
]
};
var joined = Object.keys(data).reduce(function(dest, key) {
return dest.concat(data[key]);
}, []);
document.getElementById('r').textContent = JSON.stringify(joined);

<pre id=r></pre>
&#13;
答案 1 :(得分:0)
尝试发送一组错误消息。迭代数组并将它们放入div中。
{
errorMsgs: [
"The password confirmation does not match",
"A username is required",
"Your username must be at least 5 characters long."
]
}
答案 2 :(得分:0)
[].concat.apply([], Object.keys(json) . map(function(key) { return json[key]; }));
这是如何运作的:
concat
获取参数列表并将它们连接起来。我们需要安排将数组传递给它,这些属性是password
等属性的值。为此,我们使用apply
允许我们将它期望的所有参数作为数组传递。要创建此数组,我们将对象的键映射到它们的值。
在ES6中,您可以更简单地将其写为
[].concat(...Object.keys(json) . map(key => json[key]));