Object.values()
الدالة Object.values()
تُعيد مصفوفةً للخاصيات القابلة للإحصاء والتابعة لأحد الكائنات مباشرةً، وبنفس الترتيب الذي توفِّره حلقة التكرار for...in
(والفرق بين هذه الدالة وحلقة التكرار هو أنَّ حلقة التكرار for...in
ستمرّ على الخاصيات القابلة للإحصاء والموجودة في سلسلة prototype، ولن تقتصر على الخاصيات التابعة للكائن مباشرةً).
البنية العامة
Object.values(obj)
obj
الكائن الذي نريد الحصول على قيم خاصياته القابلة للإحصاء.
القيمة المعادة
مصفوفة تُمثِّل قيم جميع الخاصيات القابلة للإحصاء والتابعة مباشرةً للكائن المعطي.
الوصف
لاحظ أنَّه في معيار ECMAScript 5 كان استعمال هذه الدالة على وسيطٍ ليس كائنًا (أي قيمةً أوليةً) سيؤدي إلى رمي TypeError
، لكن بدءًا من ECMAScript 2015 (أي ES6) فستُعامل الوسائط التي لا تُمثِّل كائنات على أنها كائنات:
Object.values('foo');
// TypeError: "foo" is not an object (ES5)
Object.values('foo');
// ["f", "o", "o"] (ES2015)
أمثلة
مثال عن استخدام هذه الدالة على كائن عادي:
var obj = { foo: 'bar', baz: 42 };
console.log(Object.values(obj)); // ['bar', 42]
مثال عن استخدام هذه الدالة على كائنٍ شبيهٍ بالمصفوفات:
var obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.values(obj)); // ['a', 'b', 'c']
مثال عن كائنٍ شبيهٍ بالمصفوفات لكن مفاتيحه ذاتُ ترتيبٍ عشوائي:
var an_obj = { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.values(an_obj)); // ['b', 'c', 'a']
لاحظ أنَّ هذه الدالة لن تُعيد الخاصية getFoo
، ذلك لأنَّها غير قابلة للإحصاء (انظر صفحة الدالة Object.create()
):
var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; } } });
my_obj.foo = 'bar';
console.log(Object.values(my_obj)); // ['bar']
دعم المتصفحات
الميزة | Chrome | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
الدعم الأساسي | 54 | 47 | غير مدعومة | مدعومة | 10.1 |
على النقيض من متصفح IE، يدعم متصفح Edge هذه الميزة.
مصادر ومواصفات
- مسودة المعيار ECMAScript Latest Draft.
- معيار ECMAScript 2017.