我需要将父数组中的数组转换为对象以匹配我的数据库模型数据。
我有这样的数组:
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];
有人知道为什么我的代码会失败,有人知道这类问题的解决方案吗?
谢谢你。
答案 0 :(得分:9)
这是Array.prototype.map
函数的完美用法:
dbInfo.emails = dbInfo.emails.map(function(e) {
return { name: e };
});
即。只需将数组中的每个元素(e
)转换为对象{ name: email }
答案 1 :(得分:5)
我认为你在寻找什么是angular.extend。有关angular.extend的好文章,请点击 here。有关文档,请单击 here 。
var newObj = {};
angular.extend(newObj,[Array here]);
答案 2 :(得分:1)
您正在将电子邮件放入对象中。相反,您希望将每个电子邮件包装在自己的对象中,然后将其放回到数组中。
for (var i = 0; i < dbInfo.emails.length; ++i) {
if(dbInfo.emails[i] !== undefined) {
dbInfo.emails[i] = { name: dbInfo.emails[i] };
}
}
答案 3 :(得分:0)
这项工作完美无缺 //选项选择
var range = [];
for (var i=1; i<$scope.totalItems+1; i++) {
range.push({value:i});
}
console.log(range);