javascript - 在记录数组搜索后附加变量和数组项

标签 javascript arrays records

我想在记录数组搜索后更新变量和数组项,并想知道在 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"]

Fiddle here

最佳答案

好吧,所以你不能轻易改变原始数据格式。实际记录有多大以及更新频率如何?因为如果它不是很大并且每秒不会改变几次,并且您将进行多次查找,那么创建我提到的映射然后从中读取会比每次都查看原始结构更有效时间。我将在这个答案中假设是这样。希望对您有所帮助。

此代码中的另一个假设:每个区域都有一个邮政编码。

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/

相关文章:

javascript - Angular Material md-menu 无法读取 null 的属性 'setAttribute'

javascript - 从数组中删除一定范围的元素

java - 无法在 ArrayList 中找到符号

list - 在Haskell中递归搜索记录属性并收集到列表中

haskell - 为什么 DuplicateRecordFields 不能进行类型推断?

c - 将数据写入动态数组时出现段错误

javascript - 我怎样才能转到另一个 HTML 文件

javascript - jQuery 在点击时显示下一张图片不适用于 .first

javascript - backbone js - 动态加载 View : should el be the launcher, 还是应该由父 View 启动?

php - 将mysql查询转换为数组格式