it-swarm.dev

الحصول على القيم من كائن في JavaScript

لدي هذا الكائن:

var data = {"id": 1, "second": "abcd"};

هذه هي القيم من النموذج. أقوم بتمرير هذا إلى وظيفة للتحقق.

في حالة وجود الخصائص المذكورة أعلاه ، يمكننا الحصول على قيمها باستخدام data["id"] و data["second"] ، ولكن في بعض الأحيان ، بناءً على قيم أخرى ، يمكن أن تكون الخصائص مختلفة.

كيف يمكنني الحصول على قيم من data مستقلة عن أسماء الممتلكات؟

54
Hari krishnan

للوصول إلى خصائص كائن دون معرفة أسماء تلك الخصائص ، يمكنك استخدام حلقة for ... in:

for(key in data) {
    if(data.hasOwnProperty(key)) {
        var value = data[key];
        //do something with value;
    }
}
71
cfs

إذا كنت تريد القيام بذلك في سطر واحد ، فحاول:

Object.keys(a).map(function(key){return a[key]})
43
Erel Segal-Halevi

في ES2017 يمكنك استخدام Object.values() :

Object.values(data)

في وقت كتابة هذا التقرير ، يكون الدعم محدودًا (FireFox و Chrome).جميع المتصفحات الرئيسية باستثناء IE تدعم هذا الآن.

في ES2015 ، يمكنك استخدام هذا:

Object.keys(data).map(k => data[k])
31
trincot

إذا تم تعريف $ ، فيمكنك التكرار

var data={"id" : 1, "second" : "abcd"};
$.each(data, function() {
  var key = Object.keys(this)[0];
  var value = this[key];
  //do something with value;
}); 

يمكنك الوصول إليه من خلال الطريقة التالية إذا كنت تعرف قيم المفاتيح

data.id

أو

data["id"]
10
user3118220

أنا آسف لأن سؤالك الختامي ليس واضحًا ولكنك مخطئ من السطر الأول. البيانات المتغيرة هي كائن ليس صفيف

من السهل الوصول إلى سمات كائن ما:

alert(data.second);

ولكن ، إذا كان هذا لا يجيب على سؤالك بالكامل ، فيرجى توضيح ذلك وإعادة النشر.

شكر !

5
Cooshal

باستخدام lodash_.values(object)

_.values({"id": 1, "second": "abcd"})

[ 1, 'abcd' ]

يتضمن lodash مجموعة كاملة من الوظائف الأخرى للعمل مع المصفوفات والكائنات والمجموعات والسلاسل وأكثر مما كنت wish تم إنشاؤه به في JavaScript (في الواقع يبدو أنها تسير ببطء نحو اللغة).

4
cs01