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

Convert array to objects using JavaScript/AngularJS

本文关键字:转换 对象 数组 JavaScript AngularJS 使用      更新时间:2023-09-26

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

我有这样的数组:

emails: Array[2] 
0: "example@mail.com"
1: "otherexample@mail.com"
id: 1 
firstname: "Jane"
lastname: "Doe

我想要实现的是将电子邮件数组转换为这样的对象数组:

    emails: Array[2] 
    0: 
{
name: "example@mail.com"
}
    1: 
{
name: "otherexample@mail.com"
}
    id: 1 
    firstname: "Jane"
    lastname: "Doe

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

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

有人知道为什么我的代码失败,有人知道此类问题的解决方案吗?

谢谢提前。

这是

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

dbInfo.emails = dbInfo.emails.map(function(e) {
    return { name: e };
});

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

我认为你要找的是angular.extend。有关angular.extend的好文章,请单击此处。有关文档,请单击此处。

var newObj = {};
angular.extend(newObj,[Array here]);

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

for (var i = 0; i < dbInfo.emails.length; ++i) {
    if(dbInfo.emails[i] !== undefined) {
        dbInfo.emails[i] = { name: dbInfo.emails[i] };
    }
}

这项工作非常完美 选项 选择

  var range = [];
    for (var i=1; i<$scope.totalItems+1; i++) {
      range.push({value:i});
    }  
  console.log(range);