我有一个数组数组,其中每个内部数组包含三个项目:邮政编码,街道名称和日期数组[用于垃圾收集]。
用户将提供他们的邮政编码和门牌号,并且需要向他们显示相应的信息。在进行检查后,还需要能够为每个'集合数组'添加日期。
这是我的代码,但数据看起来很糟糕。怎么可以改进?
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"];
答案 0 :(得分:0)
你应该做的是使用对象数组而不是数组数组的数组... 例如,可以像这样设计相同的代码:
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
}
答案 1 :(得分:0)
您应该使用邮政编码作为对象中的属性来创建主容器,而不是使用数组。这样,您就不需要遍历数组来查找邮政编码。
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}
}
答案 2 :(得分:-4)
在javascript中设置数组
var postcodes = new Array();
var collectionArrayBT161JR18 = new Array();
var collectionArrayBT161JR19 = new Array();
var collectionArrayBT161JR11 = new Array();