[英]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.