我想在记录数组搜索后更新变量和数组项,并想知道在 Javascript 中执行它的最佳方法是什么。
在这种情况下,如果在变量和区域项之间找到匹配项,则应将邮政编码项附加到变量中。
对于数组项也需要做同样的事情,但我认为 for 循环在这种情况下效果最好,因为每个单独的项都需要以某种方式访问。
顺便说一句,由于我的程序的性质,总会有匹配的。 此外,我需要能够区分 singleAddress 和 multipleAddresses 变量。
希望这段代码能更好地解释事情:
// before search
var singleAddress = "Mount Farm";
var multipleAddresses = ["Elfield Park", "Far Bletchley", "Medbourne", "Brickfields"];
// this is the record which the search needs to be run against
plot = [{
postcode: "MK1",
area: "Denbigh, Mount Farm",
}, {
postcode: "MK2",
area: "Brickfields, Central Bletchley, Fenny Stratford, Water Eaton"
}, {
postcode: "MK3",
area: "Church Green, Far Bletchley, Old Bletchley, West Bletchley",
}, {
postcode: "MK4",
area: "Emerson Valley, Furzton, Kingsmead, Shenley Brook End, Snelshall West, Tattenhoe, Tattenhoe Park, Westcroft, Whaddon, Woodhill",
}, {
postcode: "MK5",
area: "Crownhill, Elfield Park, Grange Farm, Oakhill, Knowlhill, Loughton, Medbourne, Shenley Brook End, Shenley Church End, Shenley Lodge, Shenley Wood",
}]
// after search is run then:
// var singleAddress = "Mount Farm, MK1"
// var multipleAddresses = ["Elfield Park, MK5", "Far Bletchley, MK3", "Medbourne, MK5", "Brickfields, MK2"]
最佳答案
好吧,所以你不能轻易改变原始数据格式。实际记录有多大以及更新频率如何?因为如果它不是很大并且每秒不会改变几次,并且您将进行多次查找,那么创建我提到的映射然后从中读取会比每次都查看原始结构更有效时间。我将在这个答案中假设是这样。希望对您有所帮助。
此代码中的另一个假设:每个区域都有一个邮政编码。
function convertPlot(plot)
{
var mapping={}
plot.forEach(function (r){
var locations=r.area.split(/,\s*/)
for(var i=0, loc; loc=locations[i]; i++)
mapping[loc]=r.postcode
})
return mapping
}
当你得到情节时只需这样做:
mapping=convertPlot(plot)
那么查找函数就变得微不足道了:
function lookup(adr)
{
if('string' == typeof adr)
return adr+", "+mapping[adr]
if(('object' == typeof adr) && adr instanceof Array)
return adr.map(lookup)
throw new TypeError("cannot look up something that isn't a string or array or strings")
}
关于javascript - 在记录数组搜索后附加变量和数组项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28717131/