كيف تصل إلى الخاصية الأولى لكائن جافاسكريبت؟


هل هناك طريقة أنيقة للوصول إلى الخاصية الأولى لكائن...

  1. حيث لا تعرف أسماء ممتلكاتك
  2. دون استخدام حلقة مثل for .. in أو $.each في jQuery

على سبيل المثال، أحتاج إلى الوصول إلى الكائن foo1 دون معرفة اسم foo1:

var example = {
    foo1: { /* stuff1 */},
    foo2: { /* stuff2 */},
    foo3: { /* stuff3 */}
};

الإجابة رقم 1

var obj = { first: 'someVal' };
obj[Object.keys(obj)[0]]; //returns 'someVal'

Object.values(obj)[0]; // returns 'someVal'

باستخدام هذا يمكنك الوصول أيضًا إلى خصائص أخرى عبر الفهارس. كن على وعي بذلك! Object.keys أو Object.values لا يضمن ترتيبها وفقًا لمعيار ECMAScript، ومع ذلك، قد يتم ترتيبها جميعًا في تنفيذات معظم المتصفحات، يرجى قراءة https://stackoverflow.com/a/23202095 للحصول على تفاصيل حول هذا.

الإجابة رقم 2

جرّب حلقة for … in واكسر بعد التكرار الأول:

for (var prop in object) {
    // object[prop]
    break;
}

الإجابة رقم 3

يمكنك أيضاً استخدام Object.values(example)[0].

الإجابة رقم 4

يمكنك استخدام Object.values() للوصول إلى قيم الكائن:

var obj = { first: 'someVal' };
Object.values(obj)[0]; // someVal

الإجابة رقم 5

استخدم Object.keys للحصول على مصفوفة من الخصائص الموجودة في الكائن. مثال:

var example = {
    foo1: { /* stuff1 */},
    foo2: { /* stuff2 */},
    foo3: { /* stuff3 */}
};

var keys = Object.keys(example); // => ["foo1", "foo2", "foo3"] (Note: the order here is not reliable)

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

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

الإجابة رقم 6

نسخة من سطر واحد:

var val = example[function() { for (var k in example) return k }()];

الإجابة رقم 7

ليس هناك خاصية "أولى". مفاتيح الكائن غير مرتبة.

إذا قمت بالتكرار عليها باستخدام for (var foo in bar) ستحصل عليها بترتيب ما، لكنه قد يتغير في المستقبل (خصوصًا إذا قمت بإضافة أو إزالة مفاتيح أخرى).

الإجابة رقم 8

إليك طريقة أنظف للحصول على المفتاح الأول:

var object = {
    first: 1,
    second: 2,
    third: 3,
    fourth: 4
};

let [firstKey] = Object.keys(object)
let [ , secondKey] = Object.keys(object)
let [ , , thirdKey] = Object.keys(object)

console.log(firstKey, secondKey, thirdKey)
console.log(object[firstKey], object[secondKey])

الإجابة رقم 9

قد ينتج الجواب الأعلى المصفوفة كاملة ثم يلتقط من القائمة. إليك اختصارًا فعالًا آخر

var obj = { first: 'someVal' };
Object.entries(obj)[0][1] // someVal

الإجابة رقم 10

الحل باستخدام مكتبة lodash:

_.find(example) // => {name: "foo1"}

لكن لا يوجد ضمان لترتيب تخزين خصائص الكائن الداخلية لأنه يعتمد على تنفيذ آلة جافاسكريبت الافتراضية.