javascriptObject.keys, values and entriesپیمایش شیء در جاوااسکریپت
با keys، values و entries در جاوااسکریپت دادهٔ شیء را پیمایش کنید؛ تفاوت نام ویژگی، مقدار و جفت کلیدـمقدار را با گزارش پیشرفت درس ببینید.
مفهوم به زبان ساده
شیء برای نگهداری دادههایی با نام ویژگی مناسب است، اما همیشه نام همهٔ ویژگیها را در یک حلقه بهصورت دستی نمینویسیم. Object.keys آرایهٔ نام ویژگیهای قابل شمارشِ خود شیء را میدهد. Object.values مقدارهای همان ویژگیها و Object.entries جفتهای کلید و مقدار را در آرایههای دوتایی برمیگرداند. این ابزارها شیء را به آرایهای از دادهٔ مناسب پیمایش تبدیل میکنند.
در مثال، شمار درسهای انجامشده و در انتظار، دو ویژگی شیء هستند. برای نمایش عنوان ستونها به نامها نیاز داریم، برای مجموع به مقدارها و برای گزارش برچسبدار به هر دو. استفاده از ابزار متناسب، منظور محاسبه را روشن میکند. جفتهای entries با نامهای key و count باز میشوند و map متن هر ردیف را میسازد.
این روشها همهٔ ویژگیهای ممکن شیء را فهرست نمیکنند؛ ویژگیهای بهارثرسیده، غیرقابل شمارش و کلیدهای Symbol در نتیجهٔ این سه روش نمیآیند. همچنین اگر مقدار یک ویژگی شیء دیگری باشد، آرایهٔ خروجی کپی عمیق آن نیست. برای دادهای که ترتیب تجاری مهمی دارد، ترتیب دلخواه را صریحاً مشخص کنید. مثال از نامهای متنی معمولی استفاده میکند؛ کلیدهای شبیه اندیس عددی ممکن است با ترتیب دیگری نسبت به انتظار درج دیده شوند.
کجا به کار میآید؟
- ساخت گزارش از فیلدهای نامدار بدون تکرار دستی نامها
- محاسبه روی مقدارهای یک شیء یا ساخت ردیفهای کلیدـمقدار
از تعریف تا یک مثال واقعی
const counts = { done: 3, pending: 2 };
console.log(Object.keys(counts).join(', '));
console.log(Object.values(counts).reduce((sum, count) => sum + count, 0));
console.log(
Object.entries(counts)
.map(([key, count]) => key + ':' + count)
.join(' | ')
);
done, pending 5 done:3 | pending:2
این مثال چطور کار میکند؟
keys نامهای done و pending را میدهد.
values آرایهٔ ۳ و ۲ را میسازد و reduce با مقدار اولیهٔ صفر جمع میزند.
entries هر کلید و شمارش را کنار هم میدهد تا متن برچسبدار ساخته شود.
اشتباه رایج
Object.keys را با «همهٔ ویژگیها از هر نوع» یکی نگیرید؛ این روش فقط ویژگیهای قابل شمارشِ خود شیء با کلید رشتهای را برمیگرداند.
این را به خاطر بسپارید
بر اساس نیازتان، نامها، مقدارها یا جفت آنها را انتخاب کنید؛ خروجی هر سه روش آرایه است.