разделите адрес на streetNumber, streetName и streetType

Здесь 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);

Теперь я хочу разделить адрес на номер, имя и тип.

StreetType следует определенному формату ISO и всегда находится в последней строке.

Проблема в том, что название улицы имеет несколько пробелов.
Как я могу разделить StreetName с несколькими символами из типа улицы

2 ответа

  1. Вы можете попробовать

    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(исключает первый и последний элемент) и присоединяется к подаррею на пространстве.

  2. используйте Array.shift () и массив.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, консоль