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;
这可行,但由于以下几个原因而很糟糕:
- 写起来很慢
- 每行重写两次键值名称很烦人
- 读起来有点困难
- 以编程方式进行推理非常困难。我没有需要这样做的用例,但我可以想象想要从我的代码中任意更改优先级顺序。
- 虽然处理速度不是很慢,但我可以想象其他一些方法可能会计算得更快。
这些原因使我相信上面列出的方法并不理想。还有其他更好的模式吗?
(注意:我认识到这个问题的边界是“如何最好”,而不是“如何”措辞。我知道SO并不热衷于这类问题,我的意思并不是要解释我的问题相反,我的问题应该被解释为询问:“是否有一些设计模式特别适合上述问题?”
(注意:我只会接受普通的答案,但如果您认为其他答案会有帮助,请随意提供)。
最佳答案
您可以使用short-circuit evaluation 。您仍然需要写出所有属性名称,但我不确定是否有办法在不这样做的情况下完成此任务。
const myValue = json.age || json.classYear || json.senority || false;
关于javascript - 如何选择 JSON 中存在的几个项目中的第一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41234432/