从列表中查找对象数组中的值

时间:2017-06-01 23:57:56

标签: javascript arrays string lodash

我有一个如下所示的对象数组:

用户窗体

.

{ name:"Tom", occupation:"Programmer", hobbies:" ", foodAllergy:"fish", favoriteColor:"blue" } 看起来像这样:

ValidateFieldsArray

我需要验证["hobbies", "foodAllergy", "name"] 对象数组中的ValidateFieldsArray是否填充了字符串。它将返回false,因为UserForm为空。

目前我正在使用For循环遍历validateFieldsArray,它运行正常。我想知道是否有更好的解决方案。我也hobbies字符串。

我不能使用lodash因为我比较的是密钥而不是价值。我想做这样的事情,并添加额外的检查,如string.trim()!=="":

trim

2 个答案:

答案 0 :(得分:3)

let isValid = validateFieldsArray.reduce((obj, k) => {
  return (obj && obj[k].trim()) ? obj : false;
}, UserForm);

如果有效,则返回UserForm对象,否则返回布尔值false。对象必须具有不仅仅是空格的字符串。如果将let替换为var和箭头功能,则代码为有效ES 5并返回IE 9。

答案 1 :(得分:3)

使用Array.every似乎更适合检查数组中的每个键

var isValid = ValidateFieldsArray.every( v => UserForm[v] && UserForm[v].trim().length);