2016-01-20 29 views
4

我不得不將split()中的一個大字符串轉換爲數組,無論它的工作方式如何,現在我在每個元素之前留下一個空格。刪除每個數組元素開頭的空格

例如:

var array = [" hello"," goodbye"," no"]; 

我怎樣才能擺脫呢?根據要求

拆分代碼:

var depots = v.innerHTML.split(','); 

回答

6

您可以使用.map.trim

var array = [" hello"," goodbye"," no"]; 
 
array = array.map(function (el) { 
 
    return el.trim(); 
 
}); 
 
console.log(array);

如果你使用ES2015,你可以做短,帶箭頭的功能

array = array.map(el => el.trim()); 

Example

0

循環遍歷每個數組元素和修剪。至於像下面

for (int i = 0; i < array.length; i++) 
    trimmedArray[i] = array[i].trim(); 
3

不要使用Array#map()改變每個元素的數組,中時,你可以從字符串本身通過分隔符分裂時,它刪除空格。

使用String#trim()String#split()與正則表達式

str.trim().split(/\s*,\s*/) 

正則表達式\s*,\s*將匹配逗號通過任何數量包圍(包括零)的空格。

現場演示:

var regex = /\s*,\s*/; 
 

 
document.getElementById('textbox').addEventListener('keyup', function() { 
 
    document.getElementById('result').innerHTML = JSON.stringify(this.value.trim().split(regex)); 
 
});
<input type="text" id="textbox" /> 
 
<pre id="result"></pre>

trim()將刪除字符串,並split用正則表達式,\s*的開頭和結尾的空格會分裂以逗號字符串後跟任意數量的空間。

使用帶有全局標誌的String#match的否定RegEx也可以實現相同的結果。

str.match(/[^,\s]+/g) 

爲什麼map()不應該使用?

在這種情況下使用map需要額外的開銷。首先,split字符串,,然後遍歷數組的每個元素,並使用trim刪除前導和尾隨空格,然後更新數組。這比使用帶有上述RegEx的split慢一點。

+0

怎麼樣這種情況下' 「測試,測試,測試,FF FF,ffdf d,DF」 .trim()分裂(/ \ S * /) ' –

+0

@亞歷山大作品完美! OP想要什麼? - >'v.innerHTML.split(',');'然後'我怎樣才能擺脫空格?'上面給了我輸出'[「test」,「test」,「test」,「ff ff 「,」ffdf d「,」df「]'這是OP想要的。 – Tushar

+0

不完美''ffdf d「' - 你可以看到'd'後面有空格。無論如何,我已經寫了評論作者看看你的解決方案,我認爲這是好的,但是需要知道作者想要什麼。 –