Good morning guys
I have to create a new JSON object array using the user array but when I do this getting the below error. could someone help me here? or help me to understand the mistake?
JavaScript
x
17
17
1
var users = [{ "name":"John", "age":30, "car":"fiat" },{ "name":"Raj", "age":28, "car":"hundai" }];
2
3
var allUser =[]
4
5
for (var i = 0; i < users.length; i++) {
6
test(i, users[i])
7
}
8
console.log(allUser)
9
10
function test(i, user) {
11
console.log(i)
12
<!-- allUser.push({"username":user.name}); -->
13
14
allUser[i].username = user.name;
15
//allUser[i].userage = user.age;
16
//allUser[i].usercar = user.car;
17
}
Expected Result:
all user should be like this
JavaScript
1
2
1
[{ "username":"John", "userage":30 },{ "username":"Raj", "userage":28 }]
2
Advertisement
Answer
Your test
function can be fixed in the following manner:
JavaScript
1
18
18
1
var users = [
2
{ "name": "John", "age": 30, "car": "fiat" },
3
{ "name": "Raj", "age": 28, "car": "hundai" },
4
];
5
6
var allUser = [];
7
8
for (var i = 0; i < users.length; i++) {
9
test(i, users[i]);
10
}
11
console.log(allUser);
12
13
function test(i, user) {
14
allUser[i] = {}; // create and assign a new object to `allUser[i]`
15
allUser[i].username = user.name;
16
allUser[i].userage = user.age;
17
allUser[i].usercar = user.car;
18
}
However the above looks over complicated, and a map
call would simplify things a lot.
JavaScript
1
12
12
1
var users = [
2
{ "name": "John", "age": 30, "car": "fiat" },
3
{ "name": "Raj", "age": 28, "car": "hundai" },
4
];
5
6
var allUser = users.map((user) => ({
7
username: user.name,
8
userage: user.age,
9
usercar: user.car,
10
}));
11
12
console.log(allUser);