array - splice javascript




كيفية إلحاق شيء إلى صفيف؟ (20)

كيف يمكنني إلحاق كائن (مثل سلسلة أو رقم) بصفيف في JavaScript؟


ما عليك سوى إضافة مقتطف لإضافة غير تدميري لعنصر ما.

var newArr = oldArr.concat([newEl]);

دع خاصية طول الصفيف تقوم بالعمل:

myarray[myarray.length] = 'new element value added to the end of the array';

myarray.length تقوم بإرجاع عدد السلاسل في الصفيف. JS يستند إلى الصفر لذا فإن مفتاح العنصر التالي من المصفوفة سيكون الطول الحالي للمصفوفة. EX:

var myarray = [0, 1, 2, 3],
    myarrayLength = myarray.length; //myarrayLength is set to 4

إلحاق قيمة إلى صفيف

نظرًا لأن push() يضيف push() واحدًا أو أكثر إلى نهاية صفيف ويعيد طول الصفيف الجديد ، فأحيانًا نريد فقط الحصول على مجموعة محدثة جديدة حتى يمكننا القيام بشيء مثل:

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

arr.concat([val]); // [1, 2, 3, 4]

أو فقط:

[...arr, val] // [1, 2, 3, 4]

أظهرت بعض المقاييس السريعة (كل اختبار = 500 ألف من العناصر الملحقة والنتائج هي متوسطات التشغيل المتعدد) ما يلي:

Firefox 3.6 (نظام التشغيل Mac):

  • المصفوفات الصغيرة: arr[arr.length] = b أسرع (300ms vs. 800ms)
  • صفائف كبيرة: arr.push(b) أسرع (500ms مقابل 900 مللي ثانية)

Safari 5.0 (نظام التشغيل Mac):

  • صفائف صغيرة: arr[arr.length] = b أسرع (90ms vs. 115ms)
  • صفائف كبيرة: arr[arr.length] = b أسرع (160ms vs. 185ms)

Google Chrome 6.0 (نظام التشغيل Mac):

  • صفائف صغيرة: لا يوجد فرق كبير (والكروم سريع! فقط ~ 38ms !!)
  • صفائف كبيرة: لا يوجد فرق كبير (160ms)

أنا أحب arr.push() بشكل أفضل ، ولكن أعتقد أنني سأكون أفضل حالًا مع إصدار arr[arr.length] ، على الأقل في سرعة الخام. أنا أحب أن أرى نتائج تشغيل IE على الرغم من.

الحلقات القياسية الخاصة بي:

function arrpush_small() {
    var arr1 = [];
    for (a = 0; a < 100; a++)
    {
        arr1 = [];
        for (i = 0; i < 5000; i++)
        {
            arr1.push('elem' + i);
        }
    }
}

function arrlen_small() {
    var arr2 = [];
    for (b = 0; b < 100; b++)
    {
        arr2 = [];
        for (j = 0; j < 5000; j++)
        {
            arr2[arr2.length] = 'elem' + j;
        }
    }
}


function arrpush_large() {
    var arr1 = [];
    for (i = 0; i < 500000; i++)
    {
        arr1.push('elem' + i);
    }
}

function arrlen_large() {
    var arr2 = [];
    for (j = 0; j < 500000; j++)
    {
        arr2[arr2.length] = 'elem' + j;
    }
}

أنت .push () التي قيمة. مثال: array.push (قيمة)؛


إذا كان arr صفيفًا ، وكانت val هي القيمة التي ترغب في إضافتها:

arr.push(val);

على سبيل المثال

arr = ['a', 'b', 'c'];
arr.push('d');
console.log(arr);

سوف يسجل:

['a', 'b', 'c', 'd']

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

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

arr=['a','b','c'];
arr.push('d');
//now print the array in console.log and it will contain 'a','b','c','d' as elements.
console.log(array);

إذا كنت تريد دمج صفيفتين بدون التكرار ، فيمكنك تجربة الرمز أدناه

array_merge = function (arr1, arr2) {
  return arr1.concat(arr2.filter(function(item){
    return arr1.indexOf(item) < 0;
  }))
}

الاستعمال:

array1 = ['1', '2', '3']
array2 = ['2', '3', '4', '5']
combined_array = array_merge(array1, array2)

الإخراج: [1،2،3،4،5]


إذا كنت تعرف أعلى مؤشر (مثل تخزينها في متغير "i") ، فيمكنك القيام بذلك

myArray[i + 1] = someValue;

ولكن إذا كنت لا تعرف عندها يمكنك استخدام إما

myArray.push(someValue);

كما اقترح إجابات أخرى ، أو يمكنك استخدامها

myArray[myArray.length] = someValue; 

لاحظ أن المصفوفة هي صفر على أساس. الطول يعيد أعلى مؤشر زائد واحد.

لاحظ أيضًا أنه لا يتعين عليك إضافة ترتيب ويمكنك في الواقع تخطي القيم ، كما هو موضح في

myArray[myArray.length + 1000] = someValue;

في هذه الحالة ، سيكون للقيم الموجودة بين هذه القيم قيمة غير معرفة.

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

يمكن القيام بذلك بواسطة شيء مثل ما يلي:

if(myArray[i] === "undefined"){ continue; }

إذا كنت متأكدًا من عدم وجود أي أصفار في الصفيف ، فيمكنك القيام بما يلي:

if(!myArray[i]){ continue; }

بالطبع تأكد في هذه الحالة أنك لا تستخدم كحالة myArray [i] (كما يقترح بعض الناس عبر الإنترنت على أساس أنه بمجرد أن أعظم سيكون أعلى مؤشر سيعود غير محدد والذي يقيم خاطئة)


إذا كنت تقوم بإلحاق متغير واحد فقط ، فإن push() يعمل بشكل جيد. إذا كنت تريد إلحاق مصفوفة أخرى ، فاستخدم concat() :

var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];

var ar3 = ar1.concat(ar2);

alert(ar1);
alert(ar2);
alert(ar3);

سوف يبصقون:

"1,2,3"
"4,5,6"
"1,2,3,4,5,6"

لا يؤثر concat على ar2 و ar2 ما لم يتم تعيينهم ، على سبيل المثال:

ar1 = ar1.concat(ar2);
alert(ar1);

سوف يعرض:

"1,2,3,4,5,6"

الكثير من المعلومات العظيمة here



الآن ، يمكنك الاستفادة من بنية ES6 وفعل ما يلي:

let array = [1, 2];
console.log([...array, 3]);

الحفاظ على المجموعة الأصلية غير قابل للتغيير.


ليس لدينا وظيفة إلحاق لـ Array في javascript ، لكن لدينا دفع و unshift ، تخيل أن لديك الصفيف أدناه:

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

ونحب إضافة قيمة إلى هذا المصفوفة ، يمكننا القيام به ، arr.push (6) وسيضيف 6 إلى نهاية الصفيف:

arr.push(6); // return [1, 2, 3, 4, 5, 6];

يمكننا أيضًا استخدام unshift ، انظر كيف يمكننا تطبيق ذلك:

arr.unshift(0); //return [0, 1, 2, 3, 4, 5];

وهي وظائف رئيسية لإضافة أو إلحاق قيم جديدة إلى المصفوفات.


مع مشغّل توزيع ES6 الجديد ، يصبح الانضمام إلى صفيفين باستخدام push أسهل:

var arr = [1, 2, 3, 4, 5];
var arr2 = [6, 7, 8, 9, 10];
arr.push(...arr2);
console.log(arr); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

هذا يضيف محتويات arr2 على نهاية arr .

Babel REPL مثال


يمكنك استخدام push apply الوظيفة لإلحاق صفيفين.

var array1 = [11, 32, 75];
var array2 = [99, 67, 34];

Array.prototype.push.apply(array1, array2);

ستقوم بإلحاق array2 إلى array1 . يحتوي الآن array1 على [11, 32, 75, 99, 67, 34] . هذا الرمز أبسط بكثير من كتابة الحلقات لنسخ كل العناصر في الصفيف.


يمكنك استخدام push () إذا كنت ترغب في إضافة قيم مثل arr.push("Test1", "Test2");

إذا كان لديك صفيف يمكنك استخدام concat () مثل Array1.concat(Array2)

إذا كان لديك عنصر واحد فقط لتضيفه ، فيمكنك أيضًا تجربة طول menthod على سبيل المثال array[aray.length] = 'test';


concat() ، بالطبع ، يمكن استخدامها مع صفائف الأبعاد 2 كذلك. لا الحلقات المطلوبة.

var a = [[1، 2]، [3، 4]]؛

var b = [["" a "،" b "]، [" c "،" d "]]]؛

b = b.concat (a)؛

تنبيه ب ([2] [1])؛ // result 2


push() يضيف عنصر جديد إلى نهاية صفيف.
يزيل pop() عنصرًا من نهاية الصفيف.

إلحاق كائن (مثل سلسلة أو رقم) إلى استخدام صفيف -
array.push(toAppend);


هناك طريقتان لإلحاق صفيف في JavaScript:

1) يضيف الأسلوب push() عنصرًا أو أكثر إلى نهاية صفيف ويعيد طول الصفيف الجديد.

var a = [1, 2, 3];
a.push(4, 5);
console.log(a);

انتاج:

[1, 2, 3, 4, 5]

2) يضيف الأسلوب unshift() عنصرًا واحدًا أو أكثر إلى بداية صفيف ويعيد طول الصفيف الجديد:

var a = [1, 2, 3];
a.unshift(4, 5);
console.log(a); 

انتاج:

[4, 5, 1, 2, 3]

3) يتم استخدام الأسلوب concat() لدمج صفيفين أو أكثر. لا يؤدي هذا الأسلوب إلى تغيير الصفائف الموجودة ، بل يقوم بدلاً من ذلك بإرجاع صفيف جديد.

var arr1 = ["a", "b", "c"];
var arr2 = ["d", "e", "f"];
var arr3 = arr1.concat(arr2);
console.log(arr3);

انتاج:

[ "a", "b", "c", "d", "e", "f" ]

4) يمكنك استخدام خاصية array .length لإضافة عنصر إلى نهاية الصفيف:

var ar = ['one', 'two', 'three'];
ar[ar.length] = 'four';
console.log( ar ); 

انتاج:

 ["one", "two", "three", "four"]

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

var myFish = ["angel", "clown", "mandarin", "surgeon"];
myFish.splice(4, 0, "nemo");
//array.splice(start, deleteCount, item1, item2, ...)
console.log(myFish);

انتاج:

["angel", "clown", "mandarin", "surgeon","nemo"]

6) يمكنك أيضًا إضافة عنصر جديد إلى مصفوفة ببساطة عن طريق تحديد فهرس جديد وتعيين قيمة:

var ar = ['one', 'two', 'three'];
ar[3] = 'four'; // add new element to ar
console.log(ar);

انتاج:

["one", "two","three","four"]

يمكنك فعل ذلك باستخدام ميزة javascript Es 6 الجديدة:

// initialize array

var arr = [
    "Hi",
    "Hello",
    "Bangladesh"
];

// append new value to the array

arr= [...arr , "Feni"];

// or you can put a variable value

var testValue = "Cool";

arr = [...arr , testValue ];

console.log(arr); 

// final output  [ 'Hi', 'Hello', 'Bangladesh', 'Feni', 'Cool' ]




append