سؤال

كنت أجرب طريقة splice () في jconsole

a = [1,2,3,4,5,6,7,8,9,10]
1,2,3,4,5,6,7,8,9,10

هنا ، A هي صفيف بسيط من 1 إلى 10.

b = ['a','b','c']
a,b,c

وهذا ب

a.splice(0, 2, b)
1,2
a
a,b,c,3,4,5,6,7,8,9,10

عندما أقوم بتمرير المصفوفة B إلى الوسيطة الثالثة من لصق ، أعني "إزالة الوسيطتين الأولين من A من index Zero ، واستبدلها بمصفوفة B". لم أر قط تمرير صفيف كحجة ثالثة لصق () (كل توجيه الصفحات التي قرأتها تحدث عن قائمة الحجج) ، ولكن ، يبدو أنها تقوم بالخدعة. [1،2] تتم إزالة والآن A [A ، B ، C ، 3،4،5،6،7،8،9،10]. ثم أقوم ببناء مجموعة أخرى ، والتي أسميها C:

c = ['one','two','three']
one,two,three

وحاول أن تفعل الشيء نفسه:

a.splice(0, 2, c)
a,b,c,3
a
one,two,three,4,5,6,7,8,9,10

هذه المرة ، تتم إزالة 4 (بدلاً من 2) عناصر [A ، B ، C ، 3] ويتم إضافة صفيف C في البداية. شخص ما يعرف لماذا؟ أنا متأكد من أن الحل تافهة ، لكنني لا أحصل عليه الآن.

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

المحلول

Array.splice يفعل ليس دعم صفيف باعتباره المعلمة الثالثة.
المرجعي: https://developer.mozilla.org/en/javascript/reference/global_objects/array/splice

استخدام Firebug (أو وحدة التحكم في Chrome) ، يرى المرء ما يحدث حقًا:

a.splice(0, 2, b)
> [1, 2]
a
> [["a", "b", "c"], 3, 4, 5, 6, 7, 8, 9, 10]

المشكلة هنا هي jconsole ، التي تستخدم فقط toString() لطباعة المصفوفات ، ولكن Array.toString() لا يطبع أي [].

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