0

使用脚本在某些软件之间传输数据,在这个脚本中,我有一个 if 条件来忽略一些不需要传输的特定字段。因此,我的情况类似于:

if(
    object.field == "_Field1" ||
    object.field == "_Field2" ||
    object.field == "_Field3" ||
    object.field == "_Field4" 
...
) { ... }

但是,这些字段中有很多,并且可能会出现更多字段,因此我想将这些字段移动到外部(文本或 js?)文件以便于维护和可读性,如何在不移动 if 的情况下完成此操作?理想情况下,我希望能够有另一个脚本在需要添加新字段时写入该文件,因此该文件应该只是比较。

4

3 回答 3

1

您可以在数组上添加要忽略的字段,然后在发送实际对象之前将其删除:

const ignoredFields=['_Field2','_Field2','_Field3','_Field4'] 
// or you can read them from a file

const mustIgnore = ({field})=>
  return ignoredFields.includes(field)

现在您可以mustIgnore动态使用而无需更改或添加 if 语句

于 2019-10-22T14:29:16.447 回答
0

您可以简单地创建一个执行此评估并返回结果的函数。像这样的东西:

function isObjectOneOfSpecificFieldSubsets(object) {
    return (
        object.field == "_Field1" ||
        object.field == "_Field2" ||
        object.field == "_Field3" ||
        object.field == "_Field4" 
    )
}

那么您上面的代码将变为:

if(isObjectOneOfSpecificFieldSubsets(object)) {
    ...
}
于 2019-10-22T14:24:47.517 回答
0

我不知道我是否理解你的问题,但你可以:

  • 有一个文件,其中仅包含您要检查的字段列表:
const FIELDS = [
  "_Field1",
  "_Field2",
  ...
]
  • 有一个带有 util 的文件:
const doFieldsCheckCondition = (field) => {
  ...
  for (let tmp_field of FIELDS) {
    ...
  }
}
  • 然后在您的原始脚本中使用此函数:
if (doFieldsCheckCondition(field)) {...}
于 2019-10-22T14:30:46.810 回答