Files
freeCodeCamp/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-javascript/manipulating-complex-objects.md
2022-10-20 09:13:17 -07:00

4.6 KiB

id, title, challengeType, videoUrl, forumTopicId, dashedName
id title challengeType videoUrl forumTopicId dashedName
56533eb9ac21ba0edf2244cb معالجة الكائنات المعقدة (Manipulating Complex Objects) 1 https://scrimba.com/c/c9yNMfR 18208 manipulating-complex-objects

--description--

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

إليك مثال لهيكل بيانات معقد:

const ourMusic = [
  {
    "artist": "Daft Punk",
    "title": "Homework",
    "release_year": 1997,
    "formats": [ 
      "CD", 
      "Cassette", 
      "LP"
    ],
    "gold": true
  }
];

هذه قائمة تحتوي على كائن واحد داخلها. يحتوي الكائن على أجزاء مختلفة من البيانات الوصفية إي بيانات وصفية حول مجموعة الصور. وهو إلى ذلك, يحتوي على قائمة داخلية تدعي formats. إذا كنت ترغب في إضافة المزيد من سجلات الصور، يمكنك فعل ذلك عن طريق إضافة السجلات إلى القائمة العليا. تخزن كائنات البيانات في الخواص التي لها قيمة وهُوِيَّة (key-value). وفي المثال الوارد أعلاه، "artist": "Daft Punk" هي خاصية لها هُوِيَّة تدعى artist وقيمة Daft Punk.

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

--instructions--

أضف السجلات الصور جديد إلى قائمة myMusic. أضف مقاطع artist, و title, و رَقْم release_year، و قائمة من المقاطع تدعي formats.

--hints--

يجب أن تكون myMusic قائمة

assert(Array.isArray(myMusic));

يجب أن يحتوي myMusic على عنصرين في الأقل

assert(myMusic.length > 1);

يجب أن تكون العناصر في myMusic كائنات

myMusic.forEach(object => {assert.typeOf(object, 'object')})

الكائن الخاص بك في myMusic يجب أن يحتوي على 4 خصائص في الأقل

myMusic.forEach(object => {assert(Object.keys(object).length > 3); });

يجب أن يحتوي الكائن الخاص بك في myMusic على الخاصية artist التي من نوع مقطع

myMusic.forEach(object => {
  assert.containsAllKeys(object, ['artist']);
  assert.typeOf(object.artist, 'string')
})

يجب أن يحتوي الكائن الخاص بك في myMusic على الخاصية title التي من نوع مقطع

myMusic.forEach(object => {
  assert.containsAllKeys(object, ['title']);
  assert.typeOf(object.title, 'string')
})

يجب أن يحتوي الكائن الخاص بك في myMusic على الخاصية release_year التي من نوع رَقْم

myMusic.forEach(object => {
  assert.containsAllKeys(object, ['release_year']);
  assert.typeOf(object.release_year, 'number')
})

يجب أن يحتوي الكائن الخاص بك في myMusic على الخاصية formats التي من نوع قائمة

myMusic.forEach(object => {
  assert.containsAllKeys(object, ['formats']);
  assert.typeOf(object.formats, 'array')
})

يجب أن تكون formats قائمة من مقاطع ذات عنصرين في الأقل

myMusic.forEach(object => {
  object.formats.forEach(format => {
    assert.typeOf(format, 'string')
  });
  assert.isAtLeast(object.formats.length, 2)
})

--seed--

--after-user-code--

(function(x){ if (Array.isArray(x)) { return JSON.stringify(x); } return "myMusic is not an array"})(myMusic);

--seed-contents--

const myMusic = [
  {
    "artist": "Billy Joel",
    "title": "Piano Man",
    "release_year": 1973,
    "formats": [
      "CD",
      "8T",
      "LP"
    ],
    "gold": true
  }
];

--solutions--

const myMusic = [
  {
    "artist": "Billy Joel",
    "title": "Piano Man",
    "release_year": 1973,
    "formats": [
      "CS",
      "8T",
      "LP" ],
    "gold": true
  },
  {
    "artist": "ABBA",
    "title": "Ring Ring",
    "release_year": 1973,
    "formats": [
      "CS",
      "8T",
      "LP",
    "CD",
  ]
  }
];