سؤال

ملاحظة: لا jQuery
كيف يمكنني أن أفعل شيئًا كهذا:

var array = new Array();
array[name] = "Tom";
array[age] = 15;
foreach(array as key=>value){
    alert(key + " = " + value);
}
هل كانت مفيدة؟

المحلول

بادئ ذي بدء ، يجب أن تسميها obj أو person بدلاً من array; ؛ الصفيف هو سلسلة من العناصر المماثلة ، وليس كائن واحد.

يمكنك أن تفعل ذلك مثل هذا:

var person = new Object();
person['name'] = "Tom";
person['age'] = 15;
for (var key in person) {
    if(!person.hasOwnProperty(key)) continue;     //Skip base props like toString

    alert(key + " = " + person[key]);
}

يمكنك أيضًا تهيئة الكائن باستخدام الخصائص ، مثل هذا:

person.name = "Tom";
person.age = 15;

تستطيع ايضا استخذام جافا سكريبت كائن بناء الجملة الحرفي:

var person = { name: "Tom", age: 15 };

نصائح أخرى

سيعمل هذا في سيناريو مثالك البسيط:

for (var key in array) {
  alert(key + " = " + array[key]);
}

للاستخدام العام ، يوصى بإجراء اختبار للتأكد من أن الخاصية لم يتم تطعيمها على الكائن في مكان آخر في سلسلة الميراث:

for (var key in array) {
  if (array.hasOwnProperty(key)) {
    alert(key + " = " + array[key]);
  }
}

استخدم كائن JavaScript

var object = {};
object.name = "Tom";
object.age = 15;
for ( var i in object ) {
    console.log(i+' = '+ object[i]);
}

First, you don't want an array, you want an object. PHP's idea of what constitutes an array is frankly a little weird.

var stuff = {
    name: "Tom",
    age: 15
};

/* Note: you could also have done
var stuff = {};
stuff.name = "Tom";
stuff.age = 15;

// or

var stuff = {};
stuff["name"] = "Tom";
stuff["age"] = 15;

*/

for (var key in stuff) {
    alert(key + " = " + stuff[key];
}
key=0;while(key<array.length) {
    alert(key + " = " + array.item(key));
    key++;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top