已关闭,此问题需要更focused。目前不接受答复。
**想改善这个问题吗?**更新问题,使其仅通过editing this post关注一个问题。
3天前关闭。
Improve this question
在我的应用程序中,我想根据给定的值显示各种化学元素的状态。有一个JSON文件,其中包含有关元素的所有信息
{
"1":{
"Symbol":"H",
"MeltingPoint": 13.81,
"BoilingPoint": 20.28,
...
}
}
例如,将有一个输入字段,用户可以在其中输入所需的温度,然后将得到元素的显示,并按其实际状态进行着色。为此,我需要循环遍历JSON文件,然后将值与输入的值进行比较。在比较之后,该值将被设置到阵列中的对应位置并被发送到电子显示单元。对于温度以外的其他属性(例如JSON文件是不可更改的,因为它是在外部生成的。
目前,我实现了这个函数:
const assumedInputTemperature = 20.0;
const display = new Array(119);
const color_solid = 1;
const color_liquid = 2;
const color_gas = 3;
const color_undefinded = 4;
for (const key in elements){
const value = elements[key];
const meltingPoint = value.MeltingPoint;
const boilingPoint = value.BoilingPoint1;
const number = parseInt(key)
console.log(`${number}: ${meltingPoint} : ${boilingPoint}`)
if(meltingPoint == "" && boilingPoint == ""){
console.log("Unknown!!?")
display[number] = color_undefinded;
} else {
if (meltingPoint > assumedInputTemperature) {
display[number] = color_solid;
} else if (meltingPoint < assumedInputTemperature && boilingPoint > assumedInputTemperature) {
display[number] = color_liquid;
} else if (meltingPoint < assumedInputTemperature && boilingPoint < assumedInputTemperature) {
display[number] = color_gas;
} else {
console.log("ERROR!");
}
}
console.log(display[number]);
}
这是功能性的,但我想知道是否有更好的方法来做到这一点。是否有更好的执行建议?
2条答案
按热度按时间envsm3lx1#
不知道你到底想通过做得更好来实现。你的代码是可读的,容易理解,这是足够好的。但这里有一个例子,我将如何做到这一点:
dsekswqp2#
您可以使用Map data structures,其中一个温度值作为键,然后按键查找项目。
我的建议福尔斯“花设置时间和内存组织数据结构以快速访问”的标题。
但是你可以假设在你的代码的生命周期中,周期表中只有不到150个元素(现在已知的元素有118个)。所以你现在的每一项搜索都是完全足够的。为了更快地搜索特定的数据集而增加复杂性或测试时间是不值得的。
但是,如果你的应用程序是为了搜索,我不知道,许多有机合成前体化合物,你有什么是不够的。如果数据集向上扩展,则应考虑使用数据库。许多科学应用程序使用简单且免费的SQLite数据库。