javascript - 如何选择 JSON 中存在的几个项目中的第一个?

标签 javascript json

JSON 文件由一系列键和值组成。我知道给定 JSON 中的潜在键,但不知道它们是否具有相应的非空值。我已将 JSON 文件加载到名为 JSON 的对象中。我想找到带有值的几个可能键中的第一个,然后将该值分配给变量。当我说“第一”时,我的意思是根据与 JSON 结构无关的优先级列表“第一”:

我可以执行以下操作并且它有效:

if(json.age)
    myValue = json.age;
else if(json.classYear)
    myValue = json.classYear;
else if(json.seniority)
    myValue = json.seniority
else
    myValue = false;

这可行,但由于以下几个原因而很糟糕:

  1. 写起来很慢
  2. 每行重写两次键值名称很烦人
  3. 读起来有点困难
  4. 以编程方式进行推理非常困难。我没有需要这样做的用例,但我可以想象想要从我的代码中任意更改优先级顺序。
  5. 虽然处理速度不是很慢,但我可以想象其他一些方法可能会计算得更快。

这些原因使我相信上面列出的方法并不理想。还有其他更好的模式吗?

(注意:我认识到这个问题的边界是“如何最好”,而不是“如何”措辞。我知道SO并不热衷于这类问题,我的意思并不是要解释我的问题相反,我的问题应该被解释为询问:“是否有一些设计模式特别适合上述问题?”

(注意:我只会接受普通的答案,但如果您认为其他答案会有帮助,请随意提供)。

最佳答案

您可以使用short-circuit evaluation 。您仍然需要写出所有属性名称,但我不确定是否有办法在不这样做的情况下完成此任务。

const myValue = json.age || json.classYear || json.senority || false;

关于javascript - 如何选择 JSON 中存在的几个项目中的第一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41234432/

相关文章:

javascript - js。拼接返回删除的项目?

javascript - Angular2 ngModel 更改输入类型 ="number"上的绑定(bind)

javascript - 使用输入值创建变量 javascript

javascript - 直接在 Google Firestore 中获取 DocumentId

java - 使用 jQuery 从 json url 解析变量

mysql - 如何使用 spring-data-jpa 处理 mysql json 数据类型作为条件的查询

java - 如何在不知道 key 的情况下使用java解析JSON对象?

javascript - 无法使用 AJAX 下载 TCPDF 生成的 PDF

java - 使用 gson 错误转换 json 预期为 BEGIN_OBJECT 但在第 1 行第 2 列路径 $ 处为 BEGIN_ARRAY

javascript - 将引号放入 JSON 数组中