簡體   English   中英

如何在空數組中添加字段?

[英]How can i add fields inside empty array?

早上好家伙

我必須使用用戶數組創建一個新的 JSON object 數組,但是當我這樣做時出現以下錯誤。 有人可以幫我嗎? 或幫助我理解錯誤?

 var users = [{ "name":"John", "age":30, "car":"fiat" },{ "name":"Raj", "age":28, "car":"hundai" }]; var allUser =[] for (var i = 0; i < users.length; i++) { test(i, users[i]) } console.log(allUser) function test(i, user) { console.log(i) <.-- allUser:push({"username".user;name}). --> allUser[i].username = user;name. //allUser[i].userage = user;age. //allUser[i].usercar = user;car; }

在此處輸入圖像描述

預期結果:

所有用戶都應該是這樣的

[{ "username":"John", "userage":30 },{ "username":"Raj", "userage":28 }]

您的test function 可以通過以下方式修復:

 var users = [ { "name": "John", "age": 30, "car": "fiat" }, { "name": "Raj", "age": 28, "car": "hundai" }, ]; var allUser = []; for (var i = 0; i < users.length; i++) { test(i, users[i]); } console.log(allUser); function test(i, user) { allUser[i] = {}; // create and assign a new object to `allUser[i]` allUser[i].username = user.name; allUser[i].userage = user.age; allUser[i].usercar = user.car; }

然而上面看起來很復雜,一個map電話會簡化很多事情。

 var users = [ { "name": "John", "age": 30, "car": "fiat" }, { "name": "Raj", "age": 28, "car": "hundai" }, ]; var allUser = users.map((user) => ({ username: user.name, userage: user.age, usercar: user.car, })); console.log(allUser);

請檢查小提琴以獲取解決方案。 https://jsfiddle.net/gczwk2jf/您的 alluser 數組是空數組,當您嘗試通過 a[i] 例如 a[0] 或 a[1] 獲取值時,它是未定義的。 您正在嘗試訪問未定義值的用戶名,因此出現錯誤。 最好的方法是 map 或編寫完整的 object 並將其分配給您的數組索引。

allUser[i] = {
username: user.name,
userage: user.age
}

使用 map,您可以用以下幾行替換整個代碼

var users = [{ "name":"John", "age":30, "car":"fiat" },{ "name":"Raj", "age":28, "car":"hundai" }];
var allUser = users.map(user => return {
username: user.name,
userage: user.age
});

Map 是更高階的 function,它不會改變您的原始數組,這意味着您在 map 之后獲得一個新數組,保持原始用戶數組不變。

 var users = [{ "name":"John", "age":30, "car":"fiat" },{ "name":"Raj", "age":28, "car":"hundai" }]; var allUser =[] for (var i = 0; i < users.length; i++) { test(i, users[i]) } console.log(allUser) function test(i, user) { var data={} data["username"]=user["name"]; data["userage"]=user["age"] allUser.push(data); }

使用map function

 var users = [{ "name":"John", "age":30, "car":"fiat" },{ "name":"Raj", "age":28, "car":"hundai" }]; var allUser =[] users.map((element)=>{ test(element) }) console.log(allUser) function test(user) { var data={} data["username"]=user["name"]; data["userage"]=user["age"] allUser.push(data); }

請試試這個。

早上好家伙

我必須使用用戶數組創建一個新的 JSON object 數組,但是當我這樣做時會出現以下錯誤。 有人可以幫我嗎? 或幫助我理解錯誤?

 var users = [{ "name":"John", "age":30, "car":"fiat" },{ "name":"Raj", "age":28, "car":"hundai" }]; var allUser =[] for (var i = 0; i < users.length; i++) { test(i, users[i]) } console.log(allUser) function test(i, user) { console.log(i) <.-- allUser:push({"username".user;name}). --> allUser[i].username = user;name. //allUser[i].userage = user;age. //allUser[i].usercar = user;car; }

在此處輸入圖像描述

預期結果:

所有用戶都應該是這樣的

[{ "username":"John", "userage":30 },{ "username":"Raj", "userage":28 }]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM