Javascript - 高效存储/处理大型对象列表的方法

3

我正在创建一个在线指南。它将调查用户,根据他们的回答输出最适合他们需求的列表。

我即将组装一个庞大的对象和属性列表,但在我花费太多时间之前,我想解决一些问题:

为了让您了解我的意图,以下是使用交互式指南查找旅游目的地的示例:

用户需要回答的问题:

<form name="equator" action="">
<p>What side of the equator do you want to visit?</p>
<input type="radio" name="equator" value="north">North<br />
<input type="radio" name="equator" value="south">South<br />
</form>
<br />
<form name="english" action="">
<p>Does English need to be the first language?</p>
<input type="radio" name="english" value="yes">Yes<br />
<input type="radio" name="english" value="no">No<br />
</form>
<br />
<form name="beach" action="">
<p>Do you want a nearby beach?</p>
<input type="radio" name="beach" value="yes">Yes<br />
<input type="radio" name="beach" value="maybe">Maybe<br />
<input type="radio" name="beach" value="no">No<br />
</form>

以下是我计划创建对象列表的方式:
destinations = [

{
    name: "Moscow", equator: "north", english: "no", beach: "no"
},

{
    name: "Lima", equator: "south", english: "no", beach: "no"
},

{
    name: "Nantucket", equator: "north", english: "yes", beach: "yes"
},

]

在我正在处理的项目中,对象列表实际上会有数百个,每个对象可能有二十多个属性。以下是我的一些担忧(如果这会影响你的答案,我应该指出我对Javascript的经验只有两周):

  • 考虑到潜在的大小,我上面的示例是否是存储对象列表的有效方式?如果不是,你能否建议更好的方法?
  • 迄今为止,我对Javascript的经验仅包括翻阅"w3schools"教程和创建小型项目以了解该语言……到目前为止,我创建的每个脚本都可以立即处理。考虑到我的项目,我应该担心任何性能损失吗?

谢谢您的时间。


2
“english” 和 “beach” 不应该是布尔值吗? - Joseph Silber
1
离题:请阅读w3fools.com - Joseph Silber
1
“数百”对于您提供/描述的对象类型的任何现代设备都不是一个重要的数字。在关注效率之前,请先考虑功能。 - Matt Whipple
1
使用一个表单和jQuery,你只需要一行代码 $('form').serializeArray() 就可以得到你的结构。 - elclanrs
哎呀,我没想到w3schools这么烂...下次在从在线资源学习之前我需要做些研究...感谢大家提供的替代资源。 - Remo Williams
2个回答

3

数组对象非常适合存储这样的数据。在 JavaScript 中,数组只是一种特定类型的对象

您应该考虑如何使数据尽可能“基本”;例如,如果一个答案只有两个选项,请考虑使用布尔值truefalse。如果超过两个选项,则下一个选择应该是整数01,.. 在某些情况下,JavaScript中整数比布尔值更有效率。我的意思是,通常仅在实际需要字符串时才使用字符串,例如用于名称。

了解 JavaScript 最好的资源之一可能是Codecademy,w3schools不是一个好的资源。


1

就像Joseph Silber在评论中所说,您需要将englishbeach的类型更改为布尔类型,即: truefalse

至于存储对象,我喜欢插件,理论上来讲。看一下www.knockoutjs.com上的教程。首先,他们会向您展示如何创建具有nameequatorenglishbeach属性的对象。这也将向您展示通过该数据可以进行许多提高用户体验的很酷的事情。

编辑:抱歉,直接回答您的问题,可以了解JSON。您已经在正确的轨道上,只是我不确定您如何生成您的数组。


感谢大家的快速反馈。显然,我还有很多要学习的地方......听起来似乎我在这里没有太多需要担心的,除了我自己作为一个新手程序员的不足之处。再次感谢! - Remo Williams
1
你做得很好,@user1965279。我对你的帖子最大的担忧是缺少一个合适的用户名。 - Billdr
1
刚刚把我的用户名改成了更“正式”的名字... :) - Remo Williams

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接