2011-08-18 115 views
2

我有一個包含工作人員中文和英文名稱的JavaScript數組。Javascript拆分數組

例子:

XXX MA Yo-Yo 

其中XXX代表了中國名:馬友友

我想通過使用第一空格" "作爲一個指標將其分成兩部分。

for (i = 0; i < /* ... */) 
{ 
    w_temp = arr[i]; 
    w_name = w_temp[1].split(' ', 1); 

    /* ... */ 
} 

w_name[0]成功返回馬友友。但w_name[1]返回undefined,無法返回MA Yo-Yo

我怎樣才能將它分成兩部分?

回答

1

像這樣的東西替換現有w_name = ...行:

w_name = w_temp[1].split(' '); 
w_name = [w_name[0], w_name.slice(1).join(' ')]; 

,1您之前停下來的意思,因爲它來到了第一個空間,儘快解析。這不是你想要的;您希望第一個空格之前的部分作爲一個項目,之後的部分作爲另一個項目。新代碼解析所有元素。在這之後,將其設置到由陣列:所述第一元件之後

  1. 的已經存在的第一元件,和
  2. 零件重新接合。
+0

我想'W_TEMP [1]'是一個錯誤。從這個問題來看,我認爲'w_temp'是字符串「XXX CHAN Tai-Man」 – Phil

+1

@Phil:問題指出'w_name [0]'返回正確的值,所以'w_temp [1]'必須正確。 – icktoofay

+0

可能是對的,對我來說仍然很奇怪 – Phil

0

你有

split(' ', 1) 

的1種手段最多的一部分返回。你應該忽略它,或者將它改爲兩個,如果這就是你所需要的。

0

試試這個

for (var i = 0; i < arr.length; i++) { 
    var w_temp = arr[i]; 

    // assuming w_temp contains an array where the second item 
    // is the full name string 
    var parts = w_temp[1].match(/^(.+?) (.+)$/); 
    var cn_name = parts[1]; 
    var en_name = parts[2]; 
} 
0

因爲你調用分裂法limit = 1,然後w_name只有1項。

另外,你的輸入字符串有2個空格,因此,如果你使用split沒有限制參數,w_name將包含3個項目('XXX','CHAN'和'Tai-Man')。

我認爲你應該使用這樣的:

var idx = str.indexOf(' '); 
if (idx != -1) { 
    var cn_name = str.substring(0, idx); 
    var en_name = str.substring(idx + 1); 
}