دستیابی به شیءها
شما آرایهای از شیءهای user
دارید که هر کدام دارای name
، surname
و id
هستند.
کدی برای ساختن یک آرایه دیگر از آن بنویسید که شامل شیءهای دارای id
و fullName
است، که fullName
از name
و suname
ایجاد میشود.
برای مثال:
let john = { name: "John", surname: "Smith", id: 1 };
let pete = { name: "Pete", surname: "Hunt", id: 2 };
let mary = { name: "Mary", surname: "Key", id: 3 };
let users = [ john, pete, mary ];
let usersMapped = /* ... کد شما ... */
/*
usersMapped = [
{ fullName: "John Smith", id: 1 },
{ fullName: "Pete Hunt", id: 2 },
{ fullName: "Mary Key", id: 3 }
]
*/
alert( usersMapped[0].id ) // 1
alert( usersMapped[0].fullName ) // John Smith
پس در واقع شما باید طرحی از آرایهای از شیءها برای آرایهای دیگر بیابید. سعی کنید از <=
اینجا استفاده کنید. یک فریب کوچک وجود دارد.
let john = { name: "John", surname: "Smith", id: 1 };
let pete = { name: "Pete", surname: "Hunt", id: 2 };
let mary = { name: "Mary", surname: "Key", id: 3 };
let users = [ john, pete, mary ];
let usersMapped = users.map(user => ({
fullName: `${user.name} ${user.surname}`,
id: user.id
}));
/*
usersMapped = [
{ fullName: "John Smith", id: 1 },
{ fullName: "Pete Hunt", id: 2 },
{ fullName: "Mary Key", id: 3 }
]
*/
alert( usersMapped[0].id ); // 1
alert( usersMapped[0].fullName ); // John Smith
لطفا در نظر داشته باشید که در تابعهای کمانی ما باید از پرانتزهای اضافی استفاده کنیم.
نمیتوانیم اینگونه بنویسیم:
let usersMapped = users.map(user => {
fullName: `${user.name} ${user.surname}`,
id: user.id
});
همانطور که به یاد داریم، دو نوع تابع کمانی وجود دارد: بدون بدنه value => expr
و همراه با بدنه value => {...}
.
اینجا جاوااسکریپت با }
به عنوان آغاز بدنه تابع رفتار میکند نه آغاز شیء. راه حل در پیچیدن آنها درون یک «پرانتر» است:
let usersMapped = users.map(user => ({
fullName: `${user.name} ${user.surname}`,
id: user.id
}));
حالا درست است.