javascript المصفوفات - تحديد العنصر الأخير في مصفوفة جافا سكريبت




7 Answers

كيفية الوصول إلى العنصر الأخير من المصفوفة

انها تشبهه:

var my_array = /* some array here */;
var last_element = my_array[my_array.length - 1];

في حالتك تبدو هكذا:

var array1 = loc['f096012e-2497-485d-8adb-7ec0b9352c52'];
var last_element = array1[array1.length - 1];

أو ، في إصدار أطول ، دون إنشاء متغيرات جديدة:

loc['f096012e-2497-485d-8adb-7ec0b9352c52'][loc['f096012e-2497-485d-8adb-7ec0b9352c52'].length - 1];

كيفية إضافة طريقة للحصول عليها بطريقة أبسط

إذا كنت من المعجبين بإنشاء وظائف / اختصارات لتنفيذ مثل هذه المهام ، فإن الكود التالي:

if (!Array.prototype.last){
    Array.prototype.last = function(){
        return this[this.length - 1];
    };
};

سيسمح لك بالحصول على آخر عنصر في مصفوفة من خلال استدعاء last() طريقة last() في الصفيف ، في حالتك على سبيل المثال:

loc['f096012e-2497-485d-8adb-7ec0b9352c52'].last();

يمكنك التحقق من أنه يعمل هنا: http://jsfiddle.net/D4NRN/

الجافا امثلة

هذا السؤال لديه بالفعل إجابة هنا:

أقدم تطبيقًا يُحدِّث موقع ومسار المستخدم في الوقت الفعلي ويعرض هذا على خريطة Google. لدي وظائف تسمح بتتبع عدة مستخدمين في نفس الوقت باستخدام كائن ، يتم تحديثه كل ثانية.

في الوقت الحالي ، عندما يضغط مستخدم على زر في تطبيق Android ، يتم إرسال الإحداثيات إلى قاعدة بيانات وفي كل مرة يتغير فيها الموقع ، يتم تحديث محدّد على الخريطة (ويتم تشكيل خط متعدد الخطوط).

نظرًا لأن لدي عدة مستخدمين ، فأرسل سلسلة أبجدية رقمية فريدة وعشوائية حتى أتمكن من عرض مسار فردي لكل مستخدم. عندما يقوم JS بسحب هذه البيانات من قاعدة البيانات ، فإنه يتحقق مما إذا كان المستخدم موجودًا ، إذا لم يكن موجودًا ، فإنه ينشئ مفتاحًا جديدًا مع وجود القيمة في القائمة. سيبدو شيء هكذا:

loc = {f096012e-2497-485d-8adb-7ec0b9352c52: [new google.maps.LatLng(39, -86),
                                              new google.maps.LatLng(38, -87),
                                              new google.maps.LatLng(37, -88)],
       44ed0662-1a9e-4c0e-9920-106258dcc3e7: [new google.maps.LatLng(40, -83),
                                              new google.maps.LatLng(41, -82),
                                              new google.maps.LatLng(42, -81)]}

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

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

يمكنني استخدام عبارة `(x في loc) في كل مرة يتم فيها تحديث الموقع لانتزاع آخر موقع من القائمة واستخدامه لتحديث العلامة. كيف يمكنني تحديد هذا العنصر الأخير من الصفيف داخل التجزئة؟




يمكنك أيضًا إيقاف تشغيل العنصر الأخير. كن حذرًا ، سيؤدي ذلك إلى تغيير قيمة الصفيف ، ولكن قد يكون ذلك مناسبًا لك.

var a = [1,2,3];
a.pop(); // 3
a // [1,2]






استخدام مجموعة deconstruction es6 مع عامل انتشار

var last = [...yourArray].pop();

لاحظ أن yourArray لا يتغير.




يمكنك تحديد getter على Array.prototype :

if (!Array.prototype.hasOwnProperty("last")) {
  Object.defineProperty(Array.prototype, "last", {
    get: function() {
      return this[this.length - 1];
    }
  });
}

console.log([9, 8, 7, 6].last); // => 6

كما ترى ، لا يبدو الوصول كمكالمة دالة ؛ تسمى الدالة getter داخليًا.




var last = function( obj, key ) { 
    var a = obj[key];
    return a[a.length - 1];
};

last(loc, 'f096012e-2497-485d-8adb-7ec0b9352c52');



هذا عمل:

array.reverse()[0]



Related

javascript arrays google-maps google-maps-markers