2

我正在开发一个 javascript 插件,它将获取一组元素并以自定义方式(排序、列顺序、标准)在表格中显示它。自定义选项将动态创建(日期属性将生成“之前”标准等)。

该插件将在许多不同的项目中使用,因此元素可能会有很大差异,并且随着显示的自定义,每个表格创建所需的属性也会有所不同。

我应该要求将元素作为对象还是作为数组?

基本上(不是真正的代码 - 我不会使用 foreach ;)所做的是:

foreach element in allelements
row=new tablerow
foreach columnid in chosencolumns
    row.add(element[columnid])
table.add(row)

如果每个元素都是一个数组,则 columnid 是索引,但如果每个元素都是属性名称。

element[3] 比 element['prop3'] 快吗?

我在这里制作了一个 Beta 版本,其中将元素存储为数组,但我不确定这是否是最好/最快的方式

编辑:由于项目的性质,元素属性的排序并不重要。 还:哪种方式会消耗更多内存?一些系统将包含许多具有许多属性的元素,因此内存可能是一个问题:-/

第二次编辑:如果我使用对象,我还需要为对象创建一个属性名称数组。因此,如果用户选择让视图包含第 13、第 2 和第 4 个属性作为第 1、第 2 和第 3 列,我需要为每个元素执行以下操作

row.add(element[propertynames[13]])
row.add(element[propertynames[2]])
row.add(element[propertynames[4]])

而如果我选择数组解决方案,我会“保存”属性名查找:

row.add(element[13])
row.add(element[2])
row.add(element[4])
4

1 回答 1

3

有一些标准可能是一个论据,可以选择一种数据结构而不是另一种,但这会导致主观讨论。

但是,您应该问自己的最重要的问题是,
您是否需要/希望数据按顺序显示和/或排序?

如果答案是肯定的,您应该使用Array。对象按规范无序。您当然可以对键进行循环和排序,但同样,这取决于数据的类型以及您希望如何读取它。


如果你使用Javascript 数组(它仍然是一个对象),你肯定不想通过for..in. 对于非功能性循环,这是最慢的技术。使用whilefordo-while代替。

听起来你在谈论一个真正的大数据量。一般来说,如果可能,您希望避免这种情况。尝试以较小的块读取和传输数据,或者流式传输数据可能是更好的选择。此外,如果要传输的内容很多,数据结构将成为一个因素。Like object notation通常比简单的Arrays具有更多的结构信息

于 2012-12-28T09:52:14.160 回答