正在重新构造数组的嵌套集合
Restructuring a nested collection of arrays
我有一个数组数组,其中每个内部数组包含三项:邮政编码、街道名称和日期数组[用于垃圾收集]。
用户将提供他们的邮政编码和门牌号,并需要向他们显示适当的信息。在进行检查后,还需要能够将日期添加到每个"集合数组"中。
这是我的代码,但数据结构似乎很糟糕。如何改进?
var postcodes = [
["BT161JR18", "Londonderry Park", [collectionArrayBT161JR18]],
["BT161JR19", "Ballyregan Cresent", [collectionArrayBT161JR19]],
["BT161JR11", "Ballyregan Road", [collectionArrayBT161JR11]],
] ;
var collectionArrayBT161JR18 = ["16/05/14", "18/06/14", "19/07/14"];
var collectionArrayBT161JR19 = ["17/05/14", "11/06/14"];
var collectionArrayBT161JR11 = ["14/05/14", "20/06/14"];
您应该使用对象数组,而不是数组的数组。。。例如,相同的代码可以这样设计:
var collectionArrayBT161JR18 = ["16/05/14", "18/06/14", "19/07/14"];
var collectionArrayBT161JR19 = ["17/05/14", "11/06/14"];
var collectionArrayBT161JR11 = ["14/05/14", "20/06/14"];
var postcodes = [
{postcode: "BT161JR18", place: "Londonderry Park", dates: collectionArrayBT161JR18},
{postcode: "BT161JR19", place: "Ballyregan Cresent", dates: collectionArrayBT161JR19},
{postcode: "BT161JR11", place: "Ballyregan Road", dates: collectionArrayBT161JR11}
] ;
通过这种方式,您不需要记住索引(随着时间的推移,您会忘记索引),而是使用逻辑名称。
还要注意,您需要首先定义日期,然后将它们进一步包含在邮政编码结构中。
更新评论:搜索给定邮政编码的日期非常简单。
//for your code
function findDates(pc /*postcode to search*/)
for (var i=0; i<postcodes.length; i++) {
if (postcodes[i][0] === pc)
return postcodes[i][2][0]
return false
}
//for suggested code
function findDates(pc /*postcode to search*/)
for (var i=0; i<postcodes.length; i++) {
if (postcodes[i].postcode === pc)
return postcodes[i].dates
return false
}
您应该使用postcode作为对象中的属性来创建主容器,而不是使用数组。这样,您就不需要对数组进行迭代来查找邮政编码。
var collectionArrayBT161JR18 = ["16/05/14", "18/06/14", "19/07/14"];
var collectionArrayBT161JR19 = ["17/05/14", "11/06/14"];
var collectionArrayBT161JR11 = ["14/05/14", "20/06/14"];
var postcodes = {
BT161JR18: {place: "Londonderry Park", dates: collectionArrayBT161JR18},
BT161JR19: {place: "Ballyregan Cresent", dates: collectionArrayBT161JR19},
BT161JR11: {place: "Ballyregan Road", dates: collectionArrayBT161JR11}
}
在javascript 中设置数组
var postcodes = new Array();
var collectionArrayBT161JR18 = new Array();
var collectionArrayBT161JR19 = new Array();
var collectionArrayBT161JR11 = new Array();
相关文章:
- React:使用索引变量更新嵌套集合
- 通过对象的嵌套集合进行递归总是在第一个叶节点处终止
- 帆嵌套集合
- 有关为嵌套集合构建模板的建议
- 具有深度嵌套集合的 Angular 性能和数据绑定
- 当更新流星中的嵌套集合时,如何为更新路径传递变量
- 正在重新构造数组的嵌套集合
- 主干保存嵌套集合
- 如何处理backbone.js中的嵌套集合
- 我应该使用嵌套集合来组织我的backbone.js应用程序吗
- Symfony 2:如何处理表单中的嵌套集合
- 主干嵌套集合
- 关于使用rails和嵌套集合的指导
- Backbone.js中的嵌套集合/模型视图管理
- 模型绑定编辑器模板中的嵌套集合
- 将Backbone.js JSON响应填充到嵌套集合/模型中的嵌套集合中
- 主干循环遍历并从嵌套集合中获取值
- 更新嵌入文档(嵌套集合)
- 如何在c#中使用嵌套集合对键值对建模
- 悬停只影响嵌套集合中的单个元素