将地址拆分为streetNumber,streetName和streetType

时间:2016-05-24 13:52:06

标签: javascript underscore.js lodash

jsBin 如果您不想点击链接

,请在代码中输入
var parseString = function (s) {
  var streetNumber = s.split(' ')[0];
  var streetName = s.split(' ')[1];
  var streetType = s.split(' ')[2];

  return {
    streetNumber: streetNumber,
    streetName: streetName,
    streetType: streetType,
  };
};
var address = "1498 Riedel Street";

console.log("Street Number: " + parseString(address).streetNumber);
console.log("Street Name: " + parseString(address).streetName);
console.log("Street Type: " + parseString(address).streetType);

address =  "4860 Dry Pine Bay Rd"

console.log("Street Number: " + parseString(address).streetNumber);
console.log("Street Name: " + parseString(address).streetName);
console.log("Street Type: " + parseString(address).streetType);

现在我想在Number,Name和Type中拆分地址。

StreetType遵循特定的ISO格式,并始终在字符串中找到最后一个。

问题是街道名称有多个空格。 如何将StreetName与街道类型

中的多个字符分开

2 个答案:

答案 0 :(得分:0)

你可以尝试

var address =  "4860 Dry Pine Bay Rd";
var split = address.split(" ");
var number = split[0];
var name = split[1];
for (var i = 2; i < split.length - 1; i++)
    name += " " + split[i];
var type = split[split.length - 1];

这假设街道类型包含空格。

或者,您可以使用slice(),然后使用join()

var name =  split.slice(1, split.length - 1).join(" ");

这需要split的子数组(排除第一个和最后一个元素)并在空格上加入子数组。

答案 1 :(得分:0)

使用Array.shift()Array.pop()抓取第一个和最后一个元素,然后将剩余的元素粘合在一起。

var parseAddress = function(addr){
    var r = {
        num: null,
        street: null,
        type: null
    };
    var addressComponents = addr.split(/\s/g);
    r.num = Number.parseInt(addressComponents.shift());
    r.type = addressComponents.pop();
    r.street = addressComponents.join(' ');
    return r;
};

jsbin:http://jsbin.com/zerega/edit?js,console