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


أنا أعمل مع جافا سكريبت (ES6)/فيسبوك رياكت وأحاول الحصول على أول 3 عناصر من مصفوفة تختلف في الحجم. أود القيام بما يعادل Linq take(n).

في ملف Jsx الخاص بي لدي ما يلي:

var items = list.map(i => {
  return (
    <myview item={i} key={i.id} />
  );
});

ثم للحصول على العناصر الثلاثة الأولى جربت

  var map = new Map(list);
    map.size = 3;
    var items = map(i => {
      return (<SpotlightLandingGlobalInboxItem item={i} key={i.id} />);
    });

لم ينجح هذا لأن الـ map ليس لديه دالة set. ماذا يمكن أن أجرب بعد ذلك؟

الإجابة رقم 1

للحصول على أول n عناصر من مصفوفة، استخدم

const slicedArray = array.slice(0, n);

الإجابة رقم 2

أعتقد أن ما تبحث عنه هو:

// ...inside the render() function

var size = 3;
var items = list.slice(0, size).map(i => {
    return <myview item={i} key={i.id} />
});                       
return (
  <div>
    {items}
  </div>   
)

الإجابة رقم 3

arr.length = n

قد يكون هذا مفاجئًا، ولكن خاصية length للمصفوفة لا تُستخدم فقط للحصول على عدد عناصر المصفوفة، بل هي قابلة للكتابة ويمكن استخدامها لتعيين طول المصفوفة رابط MDN. هذا سيغير المصفوفة.

إذا لم تكن تهتم بالثبات أو لا تريد تخصيص الذاكرة، أي للعبة، فهذه ستكون أسرع طريقة.

لتفريغ مصفوفة

arr.length = 0

الإجابة رقم 4

استخدام طريقة القطع

تُرجع طريقة slice() في جافاسكريبت جزءًا من مصفوفة إلى كائن مصفوفة جديد يتم اختياره من البداية إلى النهاية حيث تمثل البداية والنهاية فهرس العناصر في تلك المصفوفة. لن تتغير المصفوفة الأصلية.

الصياغة: slice(start, end)

لنقل أن لدينا مصفوفة تحتوي على 7 عناصر [5,10,15,20,25,30,35] ونريد الحصول على أول 5 عناصر من تلك المصفوفة:

let array = [5,10,15,20,25,30,35]
let newArray = array.slice(0,5)

console.log(newArray)

الإجابة رقم 5

يمكنك التصفية باستخدام index للمصفوفة.

var months = ['Jan', 'March', 'April', 'June'];
months = months.filter((month,idx) => idx < 2)
console.log(months);

الإجابة رقم 6

لا تحاول القيام بذلك باستخدام دالة الخرائط. يجب استخدام دالة الخرائط لتحويل القيم من شيء إلى آخر، عندما يتطابق عدد المدخلات والمخرجات.

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

var items = list
             .filter((i, index) => (index < 3))
             .map((i, index) => {
                   return (
                     <myview item={i} key={i.id} />
                   );
              });

الإجابة رقم 7

فقط جرب هذا للحصول على أول n عناصر من القائمة:

const slicedList = list.slice(0, n);

مثال :

const list = [1,2,3,4,5]
console.log(list.slice(0, 3)) // Should return [1,2,3] 
console.log(list.slice(0, 10)) // Returns [1,2,3,4,5] since this is all we have in 1st 10 elements

الإجابة رقم 8

[1,2,3,4,5,6,7,8,8].slice(0, 3)=تُرجع العناصر الثلاثة الأولى.

الإجابة: [1,2,3]

كيف يعمل:

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

الإجابة رقم 9

التالي نجح معي.

array.slice( where_to_start_deleting, array.length )

إليك مثال

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.slice(2, fruits.length);
//Banana,Orange  ->These first two we get as resultant