我正在尝试将一个数组(带有电子邮件地址)转换为object。如何在一个key的值数组中插入值?
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);
})();<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>预期输出
{
"gmail.com" : ["a","b","c"],
"yahoo.com" : ["de","e","f"]
}我还想添加如下内容
{
"gmail.com" : [3],//1+1+1
"yahoo.com" : [4]//1+1+1+1
}发布于 2018-06-13 16:12:11
Array.prototype.reduce通常用于将array数据转换为object格式。
请看下面的实际示例
// 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)
https://stackoverflow.com/questions/50831666
复制相似问题