拆分名称并推送到阵列

时间:2017-08-08 20:10:48

标签: javascript arrays string

我有一个这样的数组:

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

如何拆分此数组中的单词并推送到分别具有名字和姓氏的新单词?任何数量的名字都应该在第一列,如果只有一个姓氏,它应该在第二列。

我正在学习JavaScript。我尝试了一些for循环和split(),但没有成功。

3 个答案:

答案 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);