سؤال

لدي متفرق مجموعة في Jscript مع غير فارغة العناصر التي تحدث في السلبية والإيجابية على حد سواء المؤشرات.عند محاولة استخدام في حلقة لا اجتياز مجموعة من أدنى (السلبية) مؤشر إلى أعلى مؤشر إيجابي.بدلا من ذلك بإرجاع صفيف في الأمر أنني وأضاف العناصر.التعداد لا يعمل ايضا.هل هناك أي طريقة من شأنها أن تسمح لي أن أفعل ذلك ؟

على سبيل المثال

arrName = new Array();
arrName[-10] = "A";
arrName[20] = "B";
arrName[10] = "C";

عندما حلقات خلال ينبغي أن تعطي لي ثم B. C

هل كانت مفيدة؟

المحلول

من الناحية الفنية ، "" ليس في مجموعة على الإطلاق منذ كنت لا يمكن أن يكون مؤشر سلبي.هو مجرد عضو arrName الكائن.إذا تحقق arrName.طول سترى أنه هو 21 (0,1,2,...,20) لماذا لا تستخدم عادي كائن بدلا من ذلك (كما hashtable).شيئا من هذا القبيل يجب أن تعمل:

<script type="text/javascript">
//define and initialize your object/hastable
var obj = {};
obj[20] = 'C';
obj[10] = 'B';
obj[-10] = 'A';

// get the indexes and sort them
var indexes = [];
for(var i in obj){
    indexes.push(i);
}
indexes.sort(function(a,b){
    return a-b;
});

// write the values to the page in index order (increasing)
for(var i=0,l=indexes.length; i<l; i++){
    document.write(obj[indexes[i]] + ' ');
}
// Should print out as "A B C" to the page
</script>

نصائح أخرى

أنت نتصادم الحدود بين Arrays Objects في جافا سكريبت.مجموعة العناصر التي يتم الوصول إليها من قبل ترتيبي عدد صحيح بين 0 و 4294967294 (الحد الأقصى غير صحيح 32-بت - 1) ، شاملة.خصائص الكائن يتم الوصول إليها عن طريق الاسم.منذ -10 ليست صالحة عدد ترتيبي هو تفسيرها على أنها اسم.وهنا أبسط مثال:

var arr = new Array();
arr[0] = 'A';
arr[1] = 'B';
arr[-1] = 'C';
arr.length

النتيجة 2 - هناك اثنين فقط من العناصر في الصفيف في مؤشرات 0 و 1.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top