首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为JavaScript中对象中的键插入数组格式的值

为JavaScript中对象中的键插入数组格式的值
EN

Stack Overflow用户
提问于 2018-06-13 15:43:24
回答 4查看 54关注 0票数 0

我正在尝试将一个数组(带有电子邮件地址)转换为object。如何在一个key的值数组中插入值?

代码语言:javascript
复制
var list = [
  "john@yahoo.com", "rami@gmail.com",
  "josh@yahoo.com", "bale@gmail.com"
];

(function() {
  var obj1 = {};
  for (var a = 0, b = list.length; b > a; a++) {
    var str = list[a].split("@");
    var arr = [];
    arr.push(str[0]);
    if (!(str[1] in obj1)) {
      obj1[str[1]] = []; //arr.push(str[0])];
    }

    Object.values(obj1[str[1]]).push(str[0])

  };
  console.log(obj1);
})();
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

预期输出

代码语言:javascript
复制
    {
    "gmail.com" : ["a","b","c"],
    "yahoo.com" : ["de","e","f"]
    }

我还想添加如下内容

代码语言:javascript
复制
    {
    "gmail.com" : [3],//1+1+1
    "yahoo.com" : [4]//1+1+1+1
    }
EN

Stack Overflow用户

发布于 2018-06-13 16:12:11

Array.prototype.reduce通常用于将array数据转换为object格式。

请看下面的实际示例

代码语言:javascript
复制
// Emails.
const emailAddresses = ["bale@gmail.com", "john@yahoo.com", "rami@gmail.com","josh@yahoo.com"]

// Group By Domain.
const groupByDomain = addresses => addresses.reduce((acc, email) => {
  const [prefix, domain] = email.split(/@/)
  const exists = acc[domain]
  if (exists) acc[domain].push(email)
  else acc[domain] = [email]
  return acc
}, {})

// Output.
const output = groupByDomain(emailAddresses)

// Proof.
console.log(output)

票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50831666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档