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

jur*_*pro 5 javascript arrays angularjs

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

我有这样的数组:

emails: Array[2] 
0: "example@mail.com"
1: "otherexample@mail.com"
id: 1 
firstname: "Jane"
lastname: "Doe
Run Code Online (Sandbox Code Playgroud)

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

    emails: Array[2] 
    0: 
{
name: "example@mail.com"
}
    1: 
{
name: "otherexample@mail.com"
}
    id: 1 
    firstname: "Jane"
    lastname: "Doe
Run Code Online (Sandbox Code Playgroud)

我试图使用此代码将数组转换为对象但由于某种原因它失败(没有数据显示 - >变量rv为空):

 var rv = {};
        for (var i = 0; i < dbInfo.emails.length; ++i)
            if (dbInfo.emails[i] !== undefined) rv[i] = dbInfo.emails[i];
Run Code Online (Sandbox Code Playgroud)

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

谢谢你.

Aln*_*tak 9

这是功能的完美用途Array.prototype.map:

dbInfo.emails = dbInfo.emails.map(function(e) {
    return { name: e };
});
Run Code Online (Sandbox Code Playgroud)

即只需将array(e)的每个元素转换为一个对象{ name: email }


小智 5

我觉得你在寻找什么是angular.extend.有关angular.extend的好文章请点击这里.对于文档点击这里.

var newObj = {};
angular.extend(newObj,[Array here]);
Run Code Online (Sandbox Code Playgroud)