【发布时间】:2018-07-23 19:17:11
【问题描述】:
我有一组方法用于验证存储在变量val 中的输入,这样我就可以像val.email 或val["email"] 一样调用它们。我正在尝试创建一个通用函数,它将接受一个对象并根据键将验证函数应用于每个值。我的尝试如下:
const validateInput = data => {
let errors = {};
const keys = Object.keys(data);
keys.map(key => {
const error = val[key](data[key]);
errors = { ...errors, ...error };
});
return errors;
};
我收到此错误:
TypeError: val[key] 不是函数
但是,以下代码执行成功:
const validateInput = data => {
let errors = {};
const test = "firstName";
const errors = {...errors, ...val[test](data[test])};
return errors;
};
当我记录键时,我得到一个字符串数组,当我记录 typeof 键时,我也得到字符串,所以我不明白为什么它在 map 函数中不起作用。
提前致谢。
【问题讨论】:
-
因为
data中存在一些在val中不存在的键 -
你是对的。我忘记了我在一个函数中比较两个密码。我让它工作了,虽然它不那么漂亮。
标签: javascript arrays oop key array.prototype.map