javascript - 如何使用 jquery 循环遍历具有嵌套对象的数组?

标签 javascript jquery arrays loops

如果我有一个像这样的数组:

var msg = [ {name: ["a1", "a2"], value: "this is A"},
            {name: ["b1", "b2"], value: "this is B"},
            ...
          ]

该数组包含客户端表单验证的全局错误消息。我已经成功地传递了错误的输入(例如“a1”),现在想知道如何从构造不良的数组中获取相应的消息。

问题
循环这个数组的最佳方法是什么?例如,如果我将“a1”作为参数传递到我的函数中,如何提取“this is A”作为相应的消息?

inArray 并没有真正的帮助,因为我需要相应的消息而不是 a1 的位置。我也不确定这是否是存储错误消息的最佳方式...欢迎提出想法!

感谢您的帮助!

最佳答案

重新排列数据结构:

var my_param = 'b1';

// This is an object, so we can have key/value pairs
var error_codes =
{
    'a1': 0,
    'a2': 0,
    'b1': 1,
    'b2': 1
};

// This is an array because we only need values
var error_messages =
[
    'This is A',
    'This is b'
];

alert(error_messages[error_codes[my_param]]);

这使得设置新的错误代码和消息变得非常容易,并且非常容易理解。唯一的问题是 error_codes[my_param] - 它是一个对象,但我们不能这样做 error_codes.my_param 因为它会查找名为“my_param”的元素,所以使用数组表示法,我们可以查找对象键。

唯一的其他潜在陷阱是确保您没有任何尾随逗号:

var error_codes = { 'a1': 1, }; // NO!

也称为 trailing comma of death !

关于javascript - 如何使用 jquery 循环遍历具有嵌套对象的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9321365/

相关文章:

jquery - 后置函数错误 : An entry without a type name was found

javascript - Firebase - 'pushWithPriority' - 和验证

javascript - 如何通过 Promise/async-await 返回 Papa 解析的 CSV

javascript - 检查引导表行 - Javascript

javascript - 在 jquery 插件中维护状态

c - char name[11]; 之间有什么区别?和字符*名称;

javascript - $resource删除方法不起作用

javascript - 如何在鼠标悬停时停止滚动 <div>?

c - 拒绝指针的数组大小的宏

python - 如何编写与普通 Python 值和 NumPy 数组兼容的条件代码?