我有一个这样的数组:
var abc = [
"Ken Robert Smith",
"Daniel Johnson"
]
如何拆分此数组中的单词并推送到分别具有名字和姓氏的新单词?任何数量的名字都应该在第一列,如果只有一个姓氏,它应该在第二列。
我正在学习JavaScript。我尝试了一些for循环和split()
,但没有成功。
答案 0 :(得分:0)
添加一些示例代码会很有用,但粗略地说,您将要执行以下操作。
迭代数组。对于数组中的每个元素,将其拆分为空格(.split()),然后将split元素的第一个元素推送到第一个名称数组,将最后一个元素(可以在索引-1处访问)推送到最后一个元素名字数组。
我会将实际代码作为练习留给学生。
答案 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"}
答案 2 :(得分: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);