【问题标题】:Spliting name and pushing to array拆分名称并推送到数组
【发布时间】:2017-08-08 20:10:47
【问题描述】:

我有一个这样的数组:

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

如何拆分此数组中的单词并分别推送到具有名字和姓氏的新单词?第一列应包含任意数量的名字,如果只有姓氏,则应位于第二列。

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

【问题讨论】:

  • 作业问题?
  • 你能贴出你试过的代码吗?
  • 我并没有真正取得任何成就。我尝试制作函数Split(),然后在每个元素中循环这个,但我的js经验大约是一周。它不是家庭作业。我刚刚给自己设定了一个要实现的目标。

标签: javascript arrays string


【解决方案1】:

添加一些示例代码会很有用,但粗略地说,您需要执行以下操作。

遍历数组。对于数组中的每个元素,用空格 (.split()) 将其拆分,然后将拆分元素的第一个元素推入您的名字数组,并将最后一个元素(您可以在索引 -1 处访问)推到最后一个名称数组。

我会将实际代码作为练习留给学生。

【讨论】:

    【解决方案2】:

    我建议使用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"}
    

    【讨论】:

      【解决方案3】:

      所以,只有最后一个单词是姓氏,其余的都是“名字”。

      我会按空格将名称拆分为一个数组,弹出最后一个元素(姓氏),然后将其余元素连接起来形成名字。像这样:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-01-27
        • 2017-09-02
        • 1970-01-01
        • 2022-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多