2017-08-08 53 views
-4

我有一個這樣的數組:劈裂名稱和推到陣列

var abc = [ 
    "Ken Robert Smith", 
    "Daniel Johnson" 
] 

如何該數組中分開單詞,並推到新的具有第一姓名(或名稱),並分別姓?任何數量的名字都應該放在第一欄,如果只有姓,則應該放在第二欄。

我正在學習JavaScript。我嘗試了一些for循環和split()但未成功。

+0

家庭作業的問題? – alephtwo

+0

你可以發佈你試過的代碼嗎? – abagshaw

+0

可能重複的[使用javascript分割名字和姓氏](https://stackoverflow.com/questions/12340789/split-first-name-and-last-name-using-javascript) –

回答

0

添加一些示例代碼會很有用,但粗略而言,您將需要執行以下操作。

遍歷數組。對於數組中的每個元素,用空格(.split())分割它,然後將split元素的第一個元素推入到您的名字數組中,並將最後一個元素(您可以在index -1處訪問)移動到最後一個元素名稱數組。

我將實際的代碼作爲練習留給學生。

0

我推薦使用Set來存儲名稱,假設你不想重複。

var abc = [ "Ken Robert Smith", "Daniel Johnson", "Ken Johnson" ]; 

const result = abc.reduce((result, name) => { 
    const names = name.split(/\s+/g); 

    const surname = names.pop(); 

    result.surnames.add(surname); 
    names.forEach(name => result.firstNames.add(name)); 

    return result; 
}, {firstNames: new Set, surnames: new Set}); 

console.log(result.firstNames); // Set(3) {"Ken", "Robert", "Daniel"} 
console.log(result.surnames); // Set(2) {"Smith", "Johnson"} 
0

所以,只有最後一個字是姓氏,其餘的是「名字」。

我會將名稱按空格拆分成一個數組,彈出最後一個元素(姓氏),然後加入其餘元素以創建名字。就像這樣:

var abc = [ 
 
    "Ken Robert Smith", 
 
    "Daniel Johnson" 
 
]; 
 

 
var out = abc.map(function (el) { 
 
    var b = el.split(" "); 
 
    var ln = b.pop(); 
 
    return [b.join(" "), ln]; 
 
}); 
 

 
console.log(out);