7 حيل مع مشغلي الراحة والانتشار عند العمل مع كائنات JS

مرحبا يا هابر! أقدم لكم ترجمة المقال "7 حيل مع الراحة ونشر كائنات جافا سكريبت" لجويل تومز.

مرحبًا بالجميع ، ألقى لي زميل في العمل مؤخرًا رابطًا لمقالة باللغة الإنجليزية تسرد طرقًا مختلفة للعمل مع الراحة ونشر العاملين. كانت مفيدة لي وقررت ترجمتها. لذا ، لنبدأ.

صورة

يمكن استخدام عاملي Rest و Spread ليس فقط لدمج الوسائط في مصفوفة ودمج المصفوفات.

في هذه المقالة ستجد 7 حيل أقل شهرة لاستخدام عوامل الراحة والامتداد.

1. إضافة خصائص


استنساخ كائن أثناء الإضافة إلى الكائن الجديد إلى الكائن المستنسخ.
في المثال أدناه ، نقوم باستنساخ كائن المستخدم وإضافة خاصية كلمة المرور إلى كائن userWithPass المستنسخ .

const user = { id: 100, name: 'Howard Moon'}
const userWithPass = { ...user, password: 'Password!' }

user //=> { id: 100, name: 'Howard Moon' }
userWithPass //=> { id: 100, name: 'Howard Moon', password: 'Password!' }

2. دمج الكائنات


تحليل العمليات PART1 و PART2 merzhatsya كائن USER1

const part1 = { id: 100, name: 'Howard Moon' }
const part2 = { id: 100, password: 'Password!' }

const user1 = { ...part1, ...part2 }
//=> { id: 100, name: 'Howard Moon', password: 'Password!' }

حتى نفس الكائنات يمكن أن تكون متجاورة باستخدام بناء الجملة هذا.

const partial = { id: 100, name: 'Howard Moon' }
const user = { ...partial, id: 100, password: 'Password!' }

user //=> { id: 100, name: 'Howard Moon', password: 'Password!' }

3. إزالة خاصية من كائن


يمكن إزالة خصائص كائن باستخدام مجموعة من عبارات التدمير والراحة. في المثال أدناه ، نقوم بتدمير الكائن المتبقي وإزالة خاصية كلمة المرور منه .

const noPassword = ({ password, ...rest }) => rest
const user = {
  id: 100,
  name: 'Howard Moon',
  password: 'Password!'
}

noPassword(user) //=> { id: 100, name: 'Howard moon' }

4. الحذف الديناميكي للخصائص


في المثال أدناه ، تأخذ الدالة removeProperty prop كوسيطة. باستخدام اسم الخاصية الذي تم تمريره في الوسيطة ، نستبعد بشكل ديناميكي الخاصية من الكائن المستنسخ.

const user1 = {
  id: 100,
  name: 'Howard Moon',
  password: 'Password!'
}
const removeProperty = prop => ({ [prop]: _, ...rest }) => rest
//                     ----       ------
//                          \   /
//                dynamic destructuring

const removePassword = removeProperty('password')
const removeId = removeProperty('id')

removePassword(user1) //=> { id: 100, name: 'Howard Moon' }
removeId(user1) //=> { name: 'Howard Moon', password: 'Password!' }

5. تنظيم أو فرز الممتلكات بالاسم


في بعض الأحيان لا تكون الخصائص الموجودة في الكائن بالترتيب الذي نحتاج إليه. باستخدام عدة حيل ، يمكننا دفع الخصائص إلى أعلى القائمة ، أو إلى الوسط ، على سبيل المثال.

const user3 = {
  password: 'Password!',
  name: 'Naboo',
  id: 300
}

const organize = object => ({ id: undefined, ...object })
//                            -------------
//                          /
//  move id to the first property

organize(user3)
//=> { id: 300, password: 'Password!', name: 'Naboo' }

من أجل وضع كلمة المرور في النهاية ، تحتاج أولاً إلى تدمير الكائن وإزالة كلمة المرور ، ثم استخدم عامل الانتشار لأضافته.

6. الخصائص الافتراضية


الخصائص الافتراضية هي الخصائص التي سيتم تعيينها إذا لم تكن في الكائن المستنسخ.

في المثال أدناه ، حقل علامات الاقتباس مفقود في كائن user2 . تقوم الدالة setDefaults ، في حالة عدم وجود علامات الاقتباس ، بتعيينها بشكل افتراضي مع القيمة [] . بعد استدعاء وظيفة setDefaults (user2) ، تقوم بإرجاع خاصية بعلامات اقتباس للقيمة : [] عند استدعاء setDefaults (user4) ، تقوم الدالة بإرجاع قيمة غير معدلة حيث أن الكائن user4 يحتوي بالفعل على خاصية علامات الاقتباس




const user2 = {
  id: 200,
  name: 'Vince Noir'
}

const user4 = {
  id: 400,
  name: 'Bollo',
  quotes: ["I've got a bad feeling about this..."]
}

const setDefaults = ({ quotes = [], ...object}) =>
  ({ ...object, quotes })

setDefaults(user2)
//=> { id: 200, name: 'Vince Noir', quotes: [] }

setDefaults(user4)
//=> {
//=>   id: 400,
//=>   name: 'Bollo',
//=>   quotes: ["I've got a bad feeling about this..."]
//=> }

يمكنك أيضًا كتابتها على هذا النحو إذا كنت تريد عرض القيم الافتراضية أولاً:

const setDefaults = ({ ...object}) => ({ quotes: [], ...object })

7. إعادة تسمية الخصائص


باستخدام الحيل المذكورة أعلاه ، يمكننا أيضًا إنشاء وظيفة تعيد تسمية خصائص الكائن إلينا.

تخيل أن لدينا كائنًا يحمل معرف الخاصية مكتوبًا بأحرف كبيرة ، ونحن بحاجة إلى إعادة تسميته إلى أحرف صغيرة. نبدأ بإزالة خاصية المعرف من الكائن. ثم قم بإضافته مرة أخرى باستخدام معرف الاسم أثناء نسخ الكائن.

const renamed = ({ ID, ...object }) => ({ id: ID, ...object })

const user = {
  ID: 500,
  name: "Bob Fossil"
}

renamed(user) //=> { id: 500, name: 'Bob Fossil' }

8. المكافأة. إضافة عقار بناء على شرط


بفضل @ vialialbano لإظهار مثل هذه الطريقة. في هذا المثال ، نضيف حقل كلمة المرور فقط إذا كانت password == true !

const user = { id: 100, name: 'Howard Moon' }
const password = 'Password!'
const userWithPassword = {
  ...user,
  id: 100,
  ...(password && { password })
}

userWithPassword //=> { id: 100, name: 'Howard Moon', password: 'Password!' }

استنتاج


حاولت سرد بعض الطرق الأقل شهرة لاستخدام وسائل الراحة والعاملين. إذا كنت تعرف أي طرق أخرى غير مدرجة في هذه القائمة ، يرجى الكتابة عنها في التعليقات. إذا كانت هذه المقالة مفيدة لك ، يرجى إعادة نشرها لأصدقائك ومعارفك.

All Articles