0

我有 3 个用户输入字段.. 说 textbox1、textbox2、textbox3。如果值不为空,我需要做的是这样表示它们:

美国纽约州奥尔巴尼

之后的最后一个文本框值不应有逗号。我能够使用关联数组来做到这一点,但问题是我无法找到一种方法来检测它是否是最后一个值,之后逗号不需要出现。这就是我所做的

    var addressObjToFormat= {};
    addressObjToFormat.City = $("#companyentry").find("#City").val();
    addressObjToFormat.State = $("#companyentry").find("#State").val();
    addressObjToFormat.Country = $("#companyentry").find("#Country").val();

    var formattedAddress = $Utils.mapInfoMarkerAddressFormatter(addressObjToFormat);


   mapInfoMarkerAddressFormatter = function mapInfoMarkerAddressFormatter(arraddressObjToFormat) {
       var formattedAddress = '';
       for (var key in addressToFormatObj) {           
           if (addressToFormatObj.hasOwnProperty(key)) {
               if (addressToFormatObj[key] != '') {
                   formattedAddress += addressToFormatObj[key] + ',';                    
               }
           }
       }
       alert(formattedAddress);
   }

上面的代码给了我结果:

奥尔巴尼,纽约,美国,

印度,马哈尔施特拉邦,孟买,

我想要的是它应该能够检查它是否是最后一个字段以防文本框是否为空,并在每个值之后相应地放置逗号。还是有更好的方法来做到这一点?

4

3 回答 3

3

您可以使用子字符串,jsfiddle

formattedAddress = formattedAddress.substring(0, formattedAddress.length-1);

或者您可以将所有值保存在数组中并使用 Array.join 例如。

var arr = ['item1','item3','item3','item4'];
 formattedAddress  = arr.join(' ,');
于 2012-10-10T16:47:42.777 回答
1
var formattedAddress = addressToFormatObj.join(',');

数组函数 join() 使用它的第一个参数作为插入数组段之间的粘合剂。

于 2012-10-10T16:49:47.950 回答
1

有多种方法可以做到这一点

完成所有处理后,您可以,像使用正则表达式一样修剪最后一个 ' '

formattedAddress = formattedAddress.replace (/,$/g, "");

或者,您可以将您的字符串推入一个数组,然后将join它们全部推入。

var tmp = [];
for (var key in addressToFormatObj) {
    if (addressToFormatObj.hasOwnProperty(key)) {
       if (addressToFormatObj[key]) { // your condition
           tmp.push(addressToFormatObj[key]);
       }
    }
}
var formattedAddress = tmp.join(',');
于 2012-10-10T17:02:35.250 回答