在自定义对象的循环中循环一个 javascript 对象
Posted
技术标签:
【中文标题】在自定义对象的循环中循环一个 javascript 对象【英文标题】:looping a javascript object inside a loop of custom object 【发布时间】:2021-07-25 00:39:11 【问题描述】:首先,我是 javascript 的初学者。我有这个数据 data.responseJSOn.errors -
目前我正在以这种方式显示错误 -
var errors = data.responseJSON.errors;
console.log(errors);
errors.title &&
errors.title.forEach(function(messageText)
displayError(messageText);
);
errors.message &&
errors.message.forEach(function(messageText)
displayError(messageText);
);
如何使用单个代码而不是预定义的errors.title 或errors.message 从那里显示错误。
预期代码如 -
var errors = data.responseJSON.errors;
var list = ["title", "message"];
list.forEach(function(item)
errors.item &&
errors.item.forEach(function(messageText)
displayError(messageText);
);
);
如何修复它以获得输出。
【问题讨论】:
【参考方案1】:无论对象data.responseJSON.errors
中的键名如何,您都可以尝试更通用的方法
var errors = data.responseJSON.errors;
var list = ["title", "message"]; // valid keys for which we need to show message
for (key in errors)
// check if key is valid and is array
if(list.includes(key) && Array.isArray(errors[key]))
errors[key].map((msg) =>
displayError(msg);
)
【讨论】:
【参考方案2】:如果您需要 []
语法来访问带有变量值的 errors
对象的字段:
var errors = data.responseJSON.errors;
var list = ["title", "message"];
list.forEach(function(item)
errors[item] &&
errors[item].forEach(function(messageText)
displayError(messageText);
);
);
【讨论】:
【参考方案3】:您可以使用[]
访问相应的属性:
var errors = data.responseJSON.errors;
var list = ["title", "message"];
list.forEach(function(item)
errors[item] &&
errors[item].forEach(function(messageText)
displayError(messageText);
);
);
否则(作为更好的选择),您可以使用the for...in
loop 语法来访问可枚举的对象属性:
var errors = data.responseJSON.errors;
var list = ["title", "message"];
errors.forEach(function(error)
for (property in error)
displayError(error[property]);
);
【讨论】:
【参考方案4】:您不必在此处明确提及错误消息所具有的键的类型。即使在将来,如果messages
和title
发生更改,您也不必再次修改代码。
const messageText = (message: string) =>
console.log('message', message)
Object.keys(response).map((error) => response[error].length && response[error].forEach((message: string) => messageText(message)));
【讨论】:
以上是关于在自定义对象的循环中循环一个 javascript 对象的主要内容,如果未能解决你的问题,请参考以下文章