javascript - مصفوفتين - كيفية إدراج عنصر في مصفوفة في فهرس معين؟




شرح arraylist في الجافا (8)

أساليب insert مجموعة مخصصة

1. مع الحجج متعددة ودعم التسلسل

/* Syntax:
   array.insert(index, value1, value2, ..., valueN) */

Array.prototype.insert = function(index) {
    this.splice.apply(this, [index, 0].concat(
        Array.prototype.slice.call(arguments, 1)));
    return this;
};

يمكن إدراج عناصر متعددة (كما يفعل splice الأصلي) ويدعم تسلسل:

["a", "b", "c", "d"].insert(2, "X", "Y", "Z").slice(1, 6);
// ["b", "X", "Y", "Z", "c"]

2. مع وسائط نوع صفيف دمج وترتيب الدعم

/* Syntax:
   array.insert(index, value1, value2, ..., valueN) */

Array.prototype.insert = function(index) {
    index = Math.min(index, this.length);
    arguments.length > 1
        && this.splice.apply(this, [index, 0].concat([].pop.call(arguments)))
        && this.insert.apply(this, arguments);
    return this;
};

يمكن دمج المصفوفات من الحجج مع المصفوفة المحددة ، كما يدعم التسلسل:

["a", "b", "c", "d"].insert(2, "V", ["W", "X", "Y"], "Z").join("-");
// "a-b-V-W-X-Y-Z-c-d"

العرض التوضيحي: http://jsfiddle.net/UPphH/

أنا أبحث عن طريقة إدراج صفيف Javascript ، في أسلوب:

arr.insert(index, item)

ويفضل في jQuery ، ولكن سيتم تنفيذ أي تطبيق Javascript في هذه المرحلة.


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

دعونا نرى ما هو لصق () ...

تقوم طريقة splice () بتغيير محتويات الصفيف عن طريق إزالة العناصر الموجودة و / أو إضافة عناصر جديدة.

حسنًا ، تخيل أن لدينا هذا المصفوفة أدناه:

const arr = [1, 2, 3, 4, 5];

يمكننا إزالة 3 مثل هذا:

arr.splice(arr.indexOf(3), 1);

ستعود 3 ، ولكن إذا تحققنا من arr الآن ، لدينا:

[1, 2, 4, 5]

حتى الآن ، جيد جدا ، ولكن كيف يمكننا إضافة عنصر جديد إلى صفيف باستخدام لصق؟ دعونا نضع 3 في arr ...

arr.splice(2, 0, 3);

دعونا نرى ما قمنا به ...

نستخدم لصق مرة أخرى ، ولكن هذه المرة للحجة الثانية ، فإننا نمر 0 ، يعني أننا نريد حذف أي عنصر ، ولكن في نفس الوقت ، نضيف حجة ثالثة هي 3 التي سيتم إضافتها في الفهرس الثاني ...

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

arr.splice(2, 2, 3);

الذي سيحذف عنصرين في الفهرس 2 ، ثم يضيف 3 في الفهرس 2 وستكون النتيجة:

[1, 2, 3, 5];

يوضح هذا كيفية عمل كل عنصر في لصق:

array.splice (start، deleteCount، item1، item2، item3 ...)


بخلاف الربط ، يمكنك استخدام هذا الأسلوب الذي لن يحول الصفيف الأصلي ، ولكن سينشئ مصفوفة جديدة مع العنصر المضاف. يجب عليك عادة تجنب التغيير كلما أمكن ذلك. أنا أستخدم عامل نشر ES6 هنا.

const items = [1, 2, 3, 4, 5]

const insert = (arr, index, newItem) => [
  // part of the array before the specified index
  ...arr.slice(0, index),
  // inserted item
  newItem,
  // part of the array after the specified index
  ...arr.slice(index)
]

const result = insert(items, 1, 10)

console.log(result)
// [1, 10, 2, 3, 4, 5]

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

const items = [1, 2, 3, 4, 5]

const insert = (arr, index, ...newItems) => [
  // part of the array before the specified index
  ...arr.slice(0, index),
  // inserted items
  ...newItems,
  // part of the array after the specified index
  ...arr.slice(index)
]

const result = insert(items, 1, 10, 20)

console.log(result)
// [1, 10, 20, 2, 3, 4, 5]


حل آخر ممكن ، مع استخدام Array#reduce .

var arr = ["apple", "orange", "raspberry"],
    arr2 = [1, 2, 4];

function insert(arr, item, index) {
    arr = arr.reduce(function(s, a, i) {
      i == index ? s.push(item, a) : s.push(a);
      return s;
    }, []);   
    console.log(arr);
}

insert(arr, "banana", 1);
insert(arr2, 3, 2);


لقد حاولت هذا وتعمل بشكل جيد!

var initialArr = ["India","China","Japan","USA"];
initialArr.splice(index, 0, item);

الفهرس هو الموضع الذي تريد إدراج العنصر أو حذفه. 0 بمعنى أن المعلمات الثانية تحدد عدد العناصر من الفهرس المراد إزالته العنصر هي المدخلات الجديدة التي تريد أن تصنعها في الصفيف. يمكن أن يكون واحدًا أو أكثر من واحد.

initialArr.splice(2, 0, "Nigeria");
initialArr.splice(2, 0, "Australia","UK");

ما تريده هو وظيفة splice على كائن المصفوفة الأصلي.

arr.splice(index, 0, item); سيتم إدراج item في arr عند الفهرس المحدد (حذف عناصر 0 أولاً ، أي أنه مجرد إدخال).

في هذا المثال ، سننشئ مصفوفة وإضافة عنصر إليها في الفهرس 2:

var arr = [];
arr[0] = "Jani";
arr[1] = "Hege";
arr[2] = "Stale";
arr[3] = "Kai Jim";
arr[4] = "Borge";

console.log(arr.join());
arr.splice(2, 0, "Lene");
console.log(arr.join());


يمكنك تنفيذ أسلوب Array.insert بالقيام بذلك:

Array.prototype.insert = function ( index, item ) {
    this.splice( index, 0, item );
};

ثم يمكنك استخدامه مثل:

var arr = [ 'A', 'B', 'D', 'E' ];
arr.insert(2, 'C');

// => arr == [ 'A', 'B', 'C', 'D', 'E' ]

إلحاق عنصر مفرد في فهرس معين

//Append at specific position(here at index 1)
arrName.splice(1, 0,'newName1');
//1: index number, 0: number of element to remove, newName1: new element


//Append at specific position (here at index 3)
arrName[3] = 'newName1';

إلحاق عنصر متعدد في فهرس معين

//Append from index number 1
arrName.splice(1, 0,'newElemenet1', 'newElemenet2', 'newElemenet3');
//1: index number from where append start, 
//0: number of element to remove, 
//newElemenet1,2,3: new elements






insert