Javascript分割数组

Javascript分割数组,javascript,arrays,Javascript,Arrays,我有一个JavaScript数组,其中包含员工的中文和英文姓名 例如: XXX MA Yo-Yo 其中,XXX表示中文名称:馬友友 我想使用第一个空格“作为指示符,将其分为两部分 for (i = 0; i < /* ... */) { w_temp = arr[i]; w_name = w_temp[1].split(' ', 1); /* ... */ } for(i=0;i

我有一个JavaScript数组,其中包含员工的中文和英文姓名

例如:

XXX MA Yo-Yo
其中,
XXX
表示中文名称:
馬友友

我想使用第一个空格
作为指示符,将其分为两部分

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

    /* ... */
}
for(i=0;i
w\u name[0]
成功返回
馬友友。但是
w_name[1]
返回
undefined
,它不能返回
MA Yo

我怎样才能把它分成两部分呢?

你有

 split(' ', 1)

1表示最多返回一个零件。如果你需要的话,你应该把它改成两行。

用如下内容替换你现有的
w\u name=…
行:

w_name = w_temp[1].split(' ');
w_name = [w_name[0], w_name.slice(1).join(' ')];
先前的
,1
表示一旦到达第一个空格就停止解析。这不是你想要的;您希望第一个空格之前的零件作为一个项目,后面的零件作为另一个项目。新代码解析所有元素。之后,它将其设置为一个数组,该数组由以下内容组成:

  • 已存在的第一个元素,以及
  • 第一个图元后的零件重新连接
  • 试试这个

    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];
    }
    
    for(变量i=0;i
    因为您使用
    limit=1
    调用split方法,所以
    w_name
    只有1项

    此外,您的输入字符串有2个空格,因此,如果使用split With limit参数,
    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);
    }
    

    我认为
    w_temp[1]
    是一个错误。从这个问题来看,我认为
    w_temp
    是字符串“XXX CHAN Tai Man”@Phil:问题指出
    w_name[0]
    返回正确的值,因此
    w_temp[1]
    必须是正确的。