Javascript 如何处理大量数据-周期表和元素

Javascript 如何处理大量数据-周期表和元素,javascript,c++,Javascript,C++,我想用大量的数据来操作——元素和元素周期表。 首先让程序返回给定元素的原子量。你会怎么做 通过手动创建一个包含118个元素的表,并在tab1[element][]中搜索给定元素,然后通过最多118次迭代传递tab1[][atomic_\u weight] 或者不在程序表中创建,而是创建一个包含数据的文件?语言是C++和JS(浏览器中JS,你不能处理本地文件,但只能通过服务器使用Ajax来处理,是的?)p> 之后,它将不得不执行更高级的计算。当然,数据库会有帮助,但不使用它?我建议将所有元素信息放

我想用大量的数据来操作——元素和元素周期表。 首先让程序返回给定元素的原子量。你会怎么做

通过手动创建一个包含118个元素的表,并在
tab1[element][]
中搜索给定元素,然后通过最多118次迭代传递
tab1[][atomic_\u weight]

或者不在程序表中创建,而是创建一个包含数据的文件?语言是C++和JS(浏览器中JS,你不能处理本地文件,但只能通过服务器使用Ajax来处理,是的?)p>
之后,它将不得不执行更高级的计算。当然,数据库会有帮助,但不使用它?

我建议将所有元素信息放入一个结构中。
例如:

struct Element_Attributes
{
  const char * symbol;
  unsigned int weight;
};
包含这些元素的数据结构各不相同,具体取决于您希望如何访问它们

因为元素周期表上有列和行,所以矩阵是合适的。矩阵中有空白区域,因此您的程序必须处理矩阵中的{浪费的}空白空间

另一个想法是有行和列链接。行链接将指向行中的下一个元素。列链接将指向列中的下一个元素。这将比矩阵的访问时间慢,但不会有空插槽(链接)

另外,除非有人(用户)说程序太慢,否则不要担心程序的性能。其他实体通常比执行循环慢。其中一些实体是文件I/O和用户I/O

编辑1-实施
表中有33列和7行:

#define MAX_ROWS 7
#define MAX_COLUMNS 33
Element_Attributes Periodic_Table[MAX_ROWS][MAX_COLUMNS];
可以手动创建元素并将其添加到表中:

Element_Attributes hydrogen = {"H", 1};
Periodic_Table[0][0] = hydrogen;
该表也可以静态定义(声明时)。这是留给读者的练习

搜索:

  bool element_found = false;
  for (unsigned int row = 0; row < MAX_ROWS; ++row)
  {
    for (unsigned int column = 0; column < MAX_COLUMNS; ++column)
    {
      const std::string element_symbol = Periodic_Table[row][column].symbol;
      if (element_symbol == "K") // Search for Potassium
      {
        element_found = true;
        break;
      }
    }
    if (element_found)
    {
       break;
    }
  }
bool元素\u found=false;
for(无符号整数行=0;行<最大行数;++行)
{
for(无符号整数列=0;列
以下是实现这一目标的步骤:

  • 确定希望应用程序运行的目标(web、本地计算机…)
  • 根据Li 1强<(买书)<强/> /LI>学习C++或JavaScript
  • 回到这个关于堆栈溢出的问题
  • 要意识到这不是堆栈溢出的好问题
  • 当您可以回答自己的问题时,提示:

    对已设计的对象使用一维数组。这就是为什么面向对象编程如此伟大的原因之一。以后可以很容易地扩展它

    为什么使用一维数组?

  • 118个元素对一台计算机来说是一个巨大的改变,即使你检查了每一个元素。无论如何,您必须触及每一个元素,那么为什么要使它比一维数组更复杂呢

  • 您知道数据结构会有多大,而且不会改变
  • 根据元素的原子序数,您可以在O(1)时间内访问表中的任意位置的元素
  • 群和周期可以用简单的数学推导出来,因此也可以用常数时间推导出来
  • jist:

    你没有骗我。你还有很长的路要走。首先学习编程。

    对于118个元素,线性搜索可能与其他搜索一样有效。使用其他搜索所节省的时间可能并不重要(例如纳秒或毫秒)。另外118个项目的数量不是很大。所以你的意思是它应该迭代?好啊但是,例如在C++中,我们考虑一个<代码>字符串Tab1[];代码>,第一个[]将是元素,但第二个[]应该是整数/浮点,如何选择合适的方法?合适的方法是将所有属性放在一个结构中。不要用一个数组作为名称,另一个数组作为原子序数,而是将原子序数和名称放入一个结构中,然后使用一个结构数组。请看下面我的回答:“您知道数据结构有多大,而且不会改变”——不一定。2010年发现了ununsuspetium,但尚未完全证实。未来可能会有更多的元素:P@Steve别跟我耍花招=)