【问题标题】:How do I create a hash from an array by JavaScript?如何通过 JavaScript 从数组创建哈希?
【发布时间】:2017-01-13 15:11:22
【问题描述】:

我有一个数组,[name1-name1@email.com,name2-name2@email.com]

我想从这个数组创建一个新的哈希。结果应该是:

users: [
        {
           name: "name1",
           email: "name1@email.com"
        },
        {
           name: "name2",
           email:"name2@email.com
        }
       ]

【问题讨论】:

  • 您知道,这些东西的术语,即 Javascript 最接近 Ruby 的“哈希”的等价物,是“对象”。
  • 只是让您知道。您正在从另一个数组创建一个对象数组。在 JS 中没有哈希(反正还没有)。

标签: javascript arrays hashmap


【解决方案1】:

在 JavaScript 中,您可以使用 Array#mapString#split 以及对象作为结果。

此解决方案以- 作为分隔符。这可能不适用于所有电子邮件,因为- 是电子邮件的允许字符。在这种情况下,我建议使用不同的分隔符,例如 |

var data = ['name1-name1@email.com', 'name2-name2@email.com'],
    users = data.map(function (a) {
        var aa = a.split('-');
        return { name: aa[0], email: aa[1] };
    });

console.log(users);

【讨论】:

  • 这不是假设电子邮件地址中没有其他破折号吗?
  • @evolutionxbox,它可能只是一个用于分隔字符串的随机符号。最好是像| 这样的标志,它不是电子邮件地址的一部分。
【解决方案2】:

试试这个。

data = ['name1-name1@email.com', 'name2-name2@email.com'] result = data.map{|s| {name: s.split('-')[0], email: s.split('-')[1]} }

【讨论】:

    【解决方案3】:
    var arr = ['name1-name1@email.com','name2-name2@email.com'];
    arr = arr.map(node => {
        var ta = node.split('-');
        return {
            name : ta[0],
            email : ta[1]
        }
    });
    
    var users = {users : arr};
    

    不知道难度……

    【讨论】:

      【解决方案4】:

      var names = ['name1-name1@email.com','name2-name2@email.com'];
      
      var users = [];
      for (var i = 0; i < names.length; i++) {
       var splitted = names[i].split('-');
       users.push({
         name: splitted[0],
         email: splitted[1]
       })
      };
      
      console.log(users);

      【讨论】:

        猜你喜欢
        • 2011-04-20
        • 2021-08-05
        • 2021-10-21
        • 1970-01-01
        • 2011-05-08
        • 2012-03-27
        • 1970-01-01
        • 2018-08-26
        • 2019-05-21
        相关资源
        最近更新 更多