首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用JavaScript/AngularJS将数组转换为对象

使用JavaScript/AngularJS将数组转换为对象
EN

Stack Overflow用户
提问于 2014-12-30 03:34:38
回答 4查看 22.1K关注 0票数 5

我需要将父数组中的数组转换为对象,以匹配数据库模型数据。

我有这样的数组:

代码语言:javascript
复制
emails: Array[2] 
0: "example@mail.com"
1: "otherexample@mail.com"
id: 1 
firstname: "Jane"
lastname: "Doe

我想要实现的是将电子邮件数组转换为对象数组,如下所示:

代码语言:javascript
复制
    emails: Array[2] 
    0: 
{
name: "example@mail.com"
}
    1: 
{
name: "otherexample@mail.com"
}
    id: 1 
    firstname: "Jane"
    lastname: "Doe

我尝试使用下面的代码将数组转换为object,但由于某种原因失败了(没有显示数据,->变量rv为空):

代码语言:javascript
复制
 var rv = {};
        for (var i = 0; i < dbInfo.emails.length; ++i)
            if (dbInfo.emails[i] !== undefined) rv[i] = dbInfo.emails[i];

有人知道我的代码失败的原因吗?有人知道这种问题的解决方案吗?

谢谢预支。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-12-30 03:54:34

这是Array.prototype.map函数的完美用法:

代码语言:javascript
复制
dbInfo.emails = dbInfo.emails.map(function(e) {
    return { name: e };
});

也就是说,只需将数组(e)的每个单独元素转换为对象{ name: email }

票数 9
EN

Stack Overflow用户

发布于 2015-02-24 14:50:21

我想你要找的是angular.extend。要获得关于angular.extend的好文章,请单击 here。有关文档,请单击 here

代码语言:javascript
复制
var newObj = {};
angular.extend(newObj,[Array here]);
票数 5
EN

Stack Overflow用户

发布于 2014-12-30 03:51:29

您正在将电子邮件放入一个对象中。相反,您希望将每个电子邮件包装在其自己的对象中,并将其放回数组中。

代码语言:javascript
复制
for (var i = 0; i < dbInfo.emails.length; ++i) {
    if(dbInfo.emails[i] !== undefined) {
        dbInfo.emails[i] = { name: dbInfo.emails[i] };
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27694873

复制
相关文章

相似问题

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