Javascript 使用多个文本框的输入形成地址列表序列

Javascript 使用多个文本框的输入形成地址列表序列,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,我正在构建一个结构化地址序列,用于在谷歌地图中搜索。 我在所有文本框中添加了ng change,以收集数据。 地址如下 地址行1 地址行2 区域 城市 陈述 国家 因此,当用户开始在任何字段中输入地址时,地址应将其自身构造为 例如:“地址行1、地址行2、地区、城市、国家” HTML: 但这种逻辑在多种情况下都失败了。 谢谢是的,您可以使用 var app = angular.module("myApp", []); app.controller("addressController", fun

我正在构建一个结构化地址序列,用于在谷歌地图中搜索。 我在所有文本框中添加了
ng change
,以收集数据。 地址如下

  • 地址行1
  • 地址行2
  • 区域
  • 城市
  • 陈述
  • 国家
  • 因此,当用户开始在任何字段中输入地址时,地址应将其自身构造为

    例如:“地址行1、地址行2、地区、城市、国家”

    HTML:

    但这种逻辑在多种情况下都失败了。
    谢谢

    是的,您可以使用

    var app = angular.module("myApp", []);
    
    app.controller("addressController", function($scope) {
        $scope.getAddress = function(address) {
            var line1 = $scope.address.line1 || '';
            var line2 = $scope.address.line2 || '';
            var area = $scope.address.area || '';
            var city = $scope.address.city || '';
            var state = $scope.address.state || '';
            var country = $scope.address.country || '';
            $scope.enteredAddress = line1 + ',' + line2 + ',' + area + ',' + city + ',' + state + ',' + country;
        };
    });
    
    这是你的电话号码


    希望有帮助:)

    是的,您可以使用

    var app = angular.module("myApp", []);
    
    app.controller("addressController", function($scope) {
        $scope.getAddress = function(address) {
            var line1 = $scope.address.line1 || '';
            var line2 = $scope.address.line2 || '';
            var area = $scope.address.area || '';
            var city = $scope.address.city || '';
            var state = $scope.address.state || '';
            var country = $scope.address.country || '';
            $scope.enteredAddress = line1 + ',' + line2 + ',' + area + ',' + city + ',' + state + ',' + country;
        };
    });
    
    这是你的电话号码

    希望它有帮助:)

    更具陈述性

    $scope.getAddress = function(address) {
        $scope.enteredAddress = 'line1|line2|area|city|state'
               .split('|') //create properties ordered list (array)
               .map(function(name) { return address[name]}) //get values
               .filter(Boolean) //remove empty
               .join(', '); //join with comma
    }
    
    更具陈述性

    $scope.getAddress = function(address) {
        $scope.enteredAddress = 'line1|line2|area|city|state'
               .split('|') //create properties ordered list (array)
               .map(function(name) { return address[name]}) //get values
               .filter(Boolean) //remove empty
               .join(', '); //join with comma
    }
    
    使用
    Array\map
    覆盖
    Object.key
    ,然后使用
    Array\join

    var-app=angular.module('myApp',[]);
    应用程序控制器('myCtrl',函数($scope){
    $scope.address={
    第1行:“”,
    第2行:“”,
    区域:“”,
    城市:'',
    声明:'',
    国家:''
    };
    $scope.enteredAddress='';
    $scope.getAddress=函数(地址){
    var address=Object.keys(address).map(函数(项){
    回信地址[项目];
    }).过滤器(布尔值);
    $scope.entereddress=address.join(',');
    }
    });
    
    
    地址行1
    {{address.line1}}
    地址行1
    地区
    城市
    陈述
    国家
    {{entereddress}
    
    使用
    Array\map
    覆盖
    Object.key
    ,然后使用
    Array\join

    var-app=angular.module('myApp',[]);
    应用程序控制器('myCtrl',函数($scope){
    $scope.address={
    第1行:“”,
    第2行:“”,
    区域:“”,
    城市:'',
    声明:'',
    国家:''
    };
    $scope.enteredAddress='';
    $scope.getAddress=函数(地址){
    var address=Object.keys(address).map(函数(项){
    回信地址[项目];
    }).过滤器(布尔值);
    $scope.entereddress=address.join(',');
    }
    });
    
    
    地址行1
    {{address.line1}}
    地址行1
    地区
    城市
    陈述
    国家
    {{entereddress}
    
    感谢您提供的解决方案。但是如果我不输入任何文本,如何避免中间出现多个逗号(,)?@Forgotofly代码在链接中更新,但您可以使用人造丝答案。它非常有效且经过优化:)感谢您的解决方案。但是如果我不输入任何文本,如何避免中间出现多个逗号(,)?@Forgotofly代码在链接中更新,但您可以使用人造丝答案。它非常有效且经过优化:)
    Object.keys
    以任意顺序提供键。这不会过滤空值。@YuryTarabanko,
    filter
    很好,但第一个原因非常深刻。。谢谢;)处理硬编码键是唯一的选择?您无法预测对象的迭代顺序。键
    ,因为它与对象的
    相同。。。在中,但没有继承的属性。所以我认为是的,唯一的方法是先设置属性列表。@YuryTarabanko,检查更新!这样,如果键在
    对象中
    ,则将遵循所提供的顺序。。纠正我,我假设的是错误的;)<代码>对象。键以任意顺序提供键。这不会过滤空值。@YuryTarabanko,
    过滤
    很好,但第一个原因很深。。谢谢;)处理硬编码键是唯一的选择?您无法预测对象的迭代顺序。键,因为它与对象的相同。。。在中,但没有继承的属性。所以我认为是的,唯一的方法是先设置属性列表。@YuryTarabanko,检查更新!这样,如果键在
    对象中
    ,则将遵循所提供的顺序。。纠正我,我假设的是错误的;)
    $scope.getAddresss = function(address) {
    
    var add1, add2, area, city, state, country;
    
    if (address.addressLine1) {
    add1 = address.addressLine1 + ', ';
    }
    if (address.addressLine2) {
    add2 = address.addressLine2 + ', ';
    }
    if (address.area) {
    area = address.area + ', ';
    }
    if (address.city) {
    city = address.city + ', ';
    }
    if (address.state) {
    state = address.state + ', ';
    }
    
    $scope.enteredAddress = add1 + add2 + area + city + state + country;
    }