0

ユーザー入力用に 3 つのフィールドがあります。たとえば、textbox1、textbox2、textbox3 とします。私がする必要があるのは、値が空でない場合、次のように表すことです:

アルバニー、ニューヨーク、アメリカ合衆国

最後のテキスト ボックスの値の後にカンマを付けないでください。私は連想配列でそれを行うことができましたが、問題はそれが最後の値であるかどうかを検出する方法を見つけることができず、その後コンマを表示する必要がないことです.Hereは私がしたことです

    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

これを行うには複数の方法があります

,すべての処理の後、正規表現を使用して最後の「」を切り取ることができます

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 に答える
1
var formattedAddress = addressToFormatObj.join(',');

配列関数 join() は、最初のパラメーターを接着剤として使用して、配列セグメント間に配置します。

于 2012-10-10T16:49:47.950 に答える