2010-12-10 7 views
17

文字列を配列に分割して、各要素の周りの空白を削除します。私はjQueryを使用しています。私は2つの配列でこれを正常に行うことができますが、正しくないことがわかります。どのようにして配列をループし、要素がその変更を維持するように各要素をトリミングするのですか?任意のヒントありがとう。ここで私の作業コードは2つの配列を使用しています。これを行う正しい方法を教えてください。サンディエゴjQuery。各ヘルプ、配列内のすべての文字列をtrim()したい

+0

あなたは二番目の配列を宣言することなく、より多くのeffientlyそれをやりたいです? – kobe

+0

はい私は1つの配列、arVeh – Hcabnettek

答えて

49

idxパラメータまたはvalパラメータは実際には必要ありません。これはjsFiddle上で動作するように表示されます。

var cleanVehicles = []; 

$.each(vehicleText.split("|"), function(){ 
    cleanVehicles.push($.trim(this)); 
}); 

EDIT:今、私はあなたが後に実際にしているものを見てきたことを、マップを使用してみてください:

var cleanVehicles = $.map(vehicleText.split("|"), $.trim); 
+0

あなたは彼の質問に少し近づくと、彼はすでに彼がこれを行う方法を知っていると言っています。彼は配列を取って、別の配列を作成せずに単に空白を取り除きたい。 –

+0

投稿した直後にそれを見ました。地図を使用するための回答が更新されました。 –

+1

非常にクリーンな実装Chris D、ありがとう!編集の場合は – Hcabnettek

0
//a simple function 
function trimArray(dirtyArray){ 
    $.map(dirtyArray.split("|"), function(idx, val){ 
    return $.trim(this); 
    }); 
} 

trimArray(vehicleArray); 

var arVeh = vehicleText.split("|"); 
    var cleanArry = new Array(); 
    $.each(arVeh, function (idx, val) { 

     cleanArry.push($.trim(this)); 

    }); 

乾杯、 は〜ckがトリック

を行う必要がありますまたはあなたはjavascriptのの素晴らしいパワーの一部を使用してarray.prototypeを使用することができます。私はまだ少しのオブジェクトの.prototypeを使用して新しいです...これは動作するように保証されていない(しかし、それは確かに行うことができます)。

Array.prototype.trim = function(){ 
    $.map(dirtyArray.split("|"), function(idx, val){ 
    return $.trim(this); 
    }); 
} 

someArray.trim() 
+0

@ダレックを使用したいと思う、彼は単一の配列でそれをしたいと思う??? – kobe

+0

はい、彼は簡単に配列の値をトリミングする方法を望んでいます。 –

+0

@darekは、無彼の上記のコメントを参照してください、自分のコードが動作しているが、彼はより多くのeffeicentlyやりたい、私はその素敵なコードは、この作品、はい、私はjQueryのサイトでこれを見た – kobe

0

は、あなただけのこの操作を行うことができませんでしたか?

var arVeh = vehicleText.split("|"); 

$.each(arVeh, function (idx, val) { 

    arVeh[idx] = $.trim(this); 

}); 
+0

しかし、それは簡単すぎてあまり意味がありませんか? –

8

は私が

また
var arVeh = vehicleText.split("|"); 

for (var i = 0, l = arVeh.length; i < l; ++i) { 
    arVeh[i] = $.trim(arVeh[i]); 
}); 

、最初から空白を取り除く...簡単なforループのためのjQueryのオーバーヘッドを使用していないお勧めします。また、必要性を回避していますまったく別のループのために。この値をトリミングし、索引付けされたアイテムに設定します

vehicles = $.map(vehicleText.split("|"), function(e,i) { return $.trim(e) }); 
+0

私は@ジェリーの答えで言ったように - それはあまりにも簡単ではありませんし、あまりにも意味をなさないでしょうか? –

+0

これは明らかに最良の答えです。人々はあまりにもjQueryを使用することに夢中になり、jQueryはちょうどジャバスクリプトであることを忘れてしまいます。 –

+0

私はちょうど興味があります...あなたは$の実際のオーバーヘッドのための任意の数値を持っていますか?私はシンタックスの簡潔さのために$ .eachを使用する方が好きで、それは(適度な)「適度な」パフォーマンスヒットよりも私にとって重要です。 –

0

1
var my_arr = [' cats', 'dogs ', ' what ']; 
$.each(my_arr, function (id, val) { 
    my_arr[id] = $.trim(val); 
}); 
console.log(my_arr); 

"作成のJavaScriptコードの配列(アレイが、それにもかかわらず、メモリ内に作成されます)なし

var arVeh = $.trim(vehicleText).split(/\s*\|\s*/); 
-1

あなたはこれらの二つのjQueryの機能を必要とする: 1)の項目を編集する機能を持つ配列要素を反復処理: http://api.jquery.com/jquery.map/

2)文字列の先頭と末尾から空白を削除します。 http://api.jquery.com/jQuery.trim/

は彼らにこの方法を使用します。

array = $.map(array, function(value) { return value.trim();}); 

このJSFiddleをチェックしてください: https://jsfiddle.net/L00eyL4x/49/

1

JQueryを使用する必要はありません。

testArray.map(Function.prototype.call, String.prototype.trim);

Function.prototype.callコールは、トリム()testArrayの各要素について:ここにあなたのバニラソリューションです。それと同じくらい簡単です!

関連する問題