javascript - لغة - تمارين على المصفوفات في الجافا




كيف يمكنني إضافة عناصر صفيف جديدة في بداية صفيف في JavaScript؟ (4)

باستخدام ES6 ، استخدم مشغل التوزيع ... :

DEMO

var arr = [23, 45, 12, 67];
arr = [34, ...arr]; // RESULT : [34,23, 45, 12, 67]

console.log(arr)

أحتاج إلى إضافة أو إضافة عناصر في بداية المصفوفة.

على سبيل المثال ، إذا كانت المصفوفة الخاصة بي تشبه أدناه:

[23, 45, 12, 67]

والاستجابة من مكالمة أجاكس هي 34 ، أريد أن يكون الصفيف المحدث كالآتي:

[34, 23, 45, 12, 67]

حاليا أنا أخطط للقيام بذلك على النحو التالي:

var newArray = [];
newArray.push(response);

for (var i = 0; i < theArray.length; i++) {
    newArray.push(theArray[i]);
}

theArray = newArray;
delete newArray;

هل هناك أي طريقة أفضل للقيام بذلك؟ هل تحتوي JavaScript على أي وظائف مضمنة تقوم بذلك؟

تعقيد طريقي هو O(n) وسيكون من المثير حقا رؤية أفضل للتطبيقات.


استخدم unshift . إنها مثل push ، إلا أنها تضيف عناصر إلى بداية المصفوفة بدلاً من النهاية.

  • unshift / push - إضافة عنصر إلى بداية / نهاية الصفيف
  • shift / pop - remove and return the first / last element of and array

مخطط بسيط ...

   unshift -> array <- push
   shift   <- array -> pop

والرسم البياني:

          add  remove  start  end
   push    X                   X
    pop           X            X
unshift    X             X
  shift           X      X

تحقق من وثائق MDN Array . عمليا كل اللغات التي لديها القدرة على دفع / فرقعة العناصر من مصفوفة سوف يكون لها أيضا القدرة على unshift / shift (تسمى أحيانا push_front / pop_front ) ، يجب عليك أبدا تنفيذ هذه بنفسك.


لديك صفيف: var arr = [23, 45, 12, 67];

لإضافة عنصر إلى البداية ، تحتاج إلى استخدام splice :

var arr = [23, 45, 12, 67];
arr.splice(0, 0, 34)
console.log(arr);


سريع cheatsheet:

يمكن أن تكون المصطلحات shift / unshift و push / pop مربكة بعض الشيء ، على الأقل للأشخاص الذين قد لا يكونوا على دراية بالبرمجة في C.

إذا لم تكن على دراية باللغة ، فإليك ترجمة سريعة للمصطلحات البديلة ، والتي قد يكون من الأسهل تذكرها:

* array_unshift()  -  (aka Prepend ;; InsertBefore ;; InsertAtBegin )     
* array_shift()    -  (aka UnPrepend ;; RemoveBefore  ;; RemoveFromBegin )

* array_push()     -  (aka Append ;; InsertAfter   ;; InsertAtEnd )     
* array_pop()      -  (aka UnAppend ;; RemoveAfter   ;; RemoveFromEnd ) 




arrays