我试图在数组中添加对象,每个数组都有多个字段,如电子邮件和名称.以下是数组的外观.我想将它添加到另一个数组.
result = [
{
"email": "abc@gmail.com",
"firstName": "abc"
},
{
"email": "def@gmail.com",
"firstName": "def"
}
]
Run Code Online (Sandbox Code Playgroud)
以下是我试图应用的逻辑.
var userEmail = ""
var users = [];
var newUser = {'email' : "", 'name' : "", 'type' : 'to'};
for(var i=0; i<result.length; i++){
userEmail = result[i].email
//console.log(userEmail);
newUser.email = result[i].email;
newUser.name = result[i].firstName;
users.push(newUser);
}
Run Code Online (Sandbox Code Playgroud)
我的预期产量是这个
users = [ { email: 'abc@gmail.com', name: 'abc' },
{ email: 'def@gmail.com', name: 'def' } ]
Run Code Online (Sandbox Code Playgroud)
但我得到的输出就是这个
[ { email: 'abc@gmail.com', name: 'abc' },
{ email: 'abc@gmail.com', name: 'abc' } ]
Run Code Online (Sandbox Code Playgroud)
我哪里错了?
您将使用新值重复更新单个对象,而不是在每次迭代中创建新对象.你应该已经创建了var newUser = {}; 内部循环.
也就是说,最好使用.map哪个标准函数将数组转换为另一个数组:
var users = result.map(function(r) {
return { email: r.email, name: r.firstName, type: 'to' };
});
Run Code Online (Sandbox Code Playgroud)
或者在ES6语法中:
let users = result.map(r => ({ email: r.email, name: r.firstName, type: 'to' }));
Run Code Online (Sandbox Code Playgroud)