كيفية إلحاق شيء بمصفوفة؟
-
20-08-2019 - |
سؤال
كيف يمكنني إلحاق كائن (مثل سلسلة أو رقم) بمصفوفة في JavaScript؟
المحلول
استخدم ال Array.prototype.push
طريقة إلحاق القيم بمصفوفة:
// initialize array
var arr = [
"Hi",
"Hello",
"Bonjour"
];
// append new value to the array
arr.push("Hola");
console.log(arr);
يمكنك استخدام ال push()
دالة لإلحاق أكثر من قيمة بمصفوفة في استدعاء واحد:
// initialize array
var arr = ["Hi", "Hello", "Bonjour", "Hola"];
// append multiple values to the array
arr.push("Salut", "Hey");
// display all values
for (var i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
تحديث
إذا كنت ترغب في إضافة عناصر مصفوفة واحدة إلى مصفوفة أخرى، يمكنك استخدام firstArray.concat(secondArray)
:
var arr = [
"apple",
"banana",
"cherry"
];
arr = arr.concat([
"dragonfruit",
"elderberry",
"fig"
]);
console.log(arr);
تحديث
مجرد إضافة إلى هذه الإجابة إذا كنت تريد إلحاق أي قيمة ببداية مصفوفة وهذا يعني الفهرس الأول ثم يمكنك استخدامها Array.prototype.unshift
لهذا الغرض.
var arr = [1, 2, 3];
arr.unshift(0);
console.log(arr);
كما أنه يدعم إلحاق قيم متعددة مرة واحدة تمامًا push
.
نصائح أخرى
إذا كنت إلحاق فقط متغير واحد، ثم push()
يعمل على ما يرام. إذا كنت بحاجة إلى إلحاق مجموعة أخرى، استخدم concat()
:
var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];
var ar3 = ar1.concat(ar2);
alert(ar1);
alert(ar2);
alert(ar3);
ووCONCAT لا يؤثر ar1
وar2
إلا تعيينهم، على سبيل المثال:
var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];
ar1 = ar1.concat(ar2);
alert(ar1);
والكثير من معلومات كبيرة هنا .
أظهرت بعض الاختبارات المرجعية السريعة (كل اختبار = 500 ألف عنصر ملحق والنتائج عبارة عن متوسطات لعمليات تشغيل متعددة) ما يلي:
فايرفوكس 3.6 (ماك):
- المصفوفات الصغيرة:
arr[arr.length] = b
أسرع (300 مللي ثانية مقابل.800 مللي ثانية) - المصفوفات الكبيرة:
arr.push(b)
أسرع (500 مللي ثانية مقابل.900 مللي ثانية)
سفاري 5.0 (ماك):
- المصفوفات الصغيرة:
arr[arr.length] = b
أسرع (90 مللي ثانية مقابل.115 مللي ثانية) - المصفوفات الكبيرة:
arr[arr.length] = b
أسرع (160 مللي ثانية مقابل.185 مللي ثانية)
جوجل كروم 6.0 (ماك):
- المصفوفات الصغيرة: لا يوجد اختلاف جذري (وChrome سريع!فقط ~ 38 مللي ثانية !!)
- المصفوفات الكبيرة: لا يوجد اختلاف جذري (160 مللي ثانية)
انا احب ال 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;
}
}
وأعتقد أنه من الجدير بالذكر أن دفع يمكن أن يسمى بحجج متعددة، والتي سيتم إلحاق مجموعة في النظام. على سبيل المثال:
var arr = ['first'];
arr.push('second', 'third');
console.log(arr);
ونتيجة لهذا يمكنك استخدام push.apply لإلحاق مجموعة إلى مجموعة أخرى مثل ذلك:
var arr = ['first'];
arr.push('second', 'third');
arr.push.apply(arr, ['forth', 'fifth']);
console.log(arr);
المشروح ES5 ديه المزيد من المعلومات بشأن ما <لأ href = "HTTP: //es5.github كوم / # x15.4.4.7 "يختلط =" نوفولو noreferrer "> دفع و <لأ href =" http://es5.github.com/#x15.3.4.3 "يختلط =" نوفولو noreferrer "> تطبيق القيام به.
2016 تحديث: مع نشر ، كنت لا تحتاج أن apply
بعد الآن، مثل:
var arr = ['first'];
arr.push('second', 'third');
arr.push(...['fourth', 'fifth']);
console.log(arr) ;
ويمكنك استخدام push
وظيفة apply
لإلحاق اثنين من صفائف.
var array1 = [11, 32, 75];
var array2 = [99, 67, 34];
Array.prototype.push.apply(array1, array2);
console.log(array1);
ووسوف إلحاق array2
إلى array1
. الآن array1
يحتوي [11, 32, 75, 99, 67, 34]
.
هذا الرمز هو أبسط بكثير من كتابة for
حلقات لنسخ كل العناصر في المصفوفة.
نشر المشغل أ >، الانضمام إلى اثنين صفائف باستخدام push
يصبح أكثر سهولة:
var arr = [1, 2, 3, 4, 5];
var arr2 = [6, 7, 8, 9, 10];
arr.push(...arr2);
console.log(arr);
وهذا يضيف محتويات arr2
إلى نهاية arr
.
<وأ href = "https://babeljs.io/repl/#؟experimental=true&evaluate=true&loose=false&spec=false&code=var٪20arr٪20٪3D٪20٪5B1٪2C٪202٪2C٪203٪ 2C٪ 204٪ 2C٪ 205٪ 5D٪ 3B٪ 0Aarr.push (...٪ 5B6٪ 2C٪ 207٪ 2C٪ 208٪ 2C٪ 209٪ 2C٪ 2010٪ 5D)٪ 3B٪ 0Aconsole.log (آر)٪ 3B "يختلط =" نوفولو noreferrer "> بابل REPL مثال
إذا arr
هو صفيف، وval
هي القيمة التي ترغب في إضافة الاستخدام:
arr.push(val);
ومنها مثلا.
var arr = ['a', 'b', 'c'];
arr.push('d');
console.log(arr);
جافا سكريبت مع إيكماسكريبت 5 القياسي الذي تدعمه معظم المتصفحات الآن، يمكنك استخدامه apply()
لإلحاق array1
ل array2
.
var array1 = [3, 4, 5];
var array2 = [1, 2];
Array.prototype.push.apply(array2, array1);
console.log(array2); // [1, 2, 3, 4, 5]
جافا سكريبت مع إيكماسكريبت 6 القياسي الذي يدعمه Chrome وFF وIE Edge، يمكنك استخدام spread
المشغل أو العامل:
"use strict";
let array1 = [3, 4, 5];
let array2 = [1, 2];
array2.push(...array1);
console.log(array2); // [1, 2, 3, 4, 5]
ال spread
سوف يحل محل المشغل array2.push(...array1);
مع array2.push(3, 4, 5);
عندما يفكر المتصفح في المنطق.
نقطة إضافية
إذا كنت ترغب في إنشاء آخر متغير لتخزين كافة العناصر من كلا المصفوفتين، يمكنك القيام بذلك:
ES5 var combinedArray = array1.concat(array2);
ES6 const combinedArray = [...array1, ...array2]
عامل الانتشار (...
) هو توزيع كافة العناصر من المجموعة.
إذا كنت تريد إلحاق اثنين من صفائف -
var a = ['a', 'b'];
var b = ['c', 'd'];
وبعد ذلك يمكن استخدام:
var c = a.concat(b);
وإذا كنت ترغب في اضافة التسجيلة g
لمجموعة (var a=[]
) ثم هل يمكن استخدام:
a.push('g');
وطريقة push()
يضيف عناصر جديدة إلى نهاية صفيف، وإرجاع طول الجديد. مثال:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.push("Kiwi");
// The result of fruits will be:
Banana, Orange, Apple, Mango, Kiwi
والجواب الدقيق على سؤالك وأجاب بالفعل، ولكن دعونا نلقي نظرة على بعض الطرق الأخرى لإضافة عناصر إلى صفيف.
وطريقة unshift()
يضيف عناصر جديدة إلى بداية صفيف، وإرجاع طول الجديد. مثال:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.unshift("Lemon", "Pineapple");
// The result of fruits will be:
Lemon, Pineapple, Banana, Orange, Apple, Mango
وأخيرا، يتم استخدام طريقة concat()
للانضمام اثنين أو أكثر من المصفوفات. مثال:
var fruits = ["Banana", "Orange"];
var moreFruits = ["Apple", "Mango", "Lemon"];
var allFruits = fruits.concat(moreFruits);
// The values of the children array will be:
Banana, Orange, Apple, Mango, Lemon
هناك طريقتان لإلحاق مصفوفة في 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) يمكنك استخدام المصفوفة .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"]
والآن، يمكنك الاستفادة من جملة ES6 والقيام فقط:
let array = [1, 2];
console.log([...array, 3]);
والحفاظ على مجموعة الأصلي غير قابل للتغيير.
إذا كنت تعرف أعلى مؤشر (مثل تخزينها في متغير "أنا") ثم يمكنك القيام به
myArray[i + 1] = someValue;
ولكن إذا كنت لا تعرف بعد ذلك يمكنك إما استخدام
myArray.push(someValue);
وكما تشير إجابات أخرى، أو يمكنك استخدام
myArray[myArray.length] = someValue;
ملحوظة أن مجموعة صفرا مستندا في ذلك مدة العرض إرجاع أعلى مؤشر زائد واحد.
لاحظ أيضا أنه لم يكن لديك لإضافة في النظام، ويمكنك تخطي الواقع والقيم، كما هو الحال في
myArray[myArray.length + 1000] = someValue;
في هذه الحالة سوف القيم في بين لها قيمة غير محددة.
ووبالتالي هو ممارسة جيدة عندما حلقات من خلال جافا سكريبت للتحقق من قيمة موجود بالفعل في تلك المرحلة.
ويمكن القيام بذلك عن طريق شيء كما يلي:
if(myArray[i] === "undefined"){ continue; }
وإذا كنت متأكدا من أن لم يكن لديك أي الأصفار في مجموعة ثم يمكنك القيام به فقط:
if(!myArray[i]){ continue; }
وبالطبع تأكد في هذه الحالة أن كنت لا تستخدم مثل myArray حالة [أنا] (لأن بعض الناس على الانترنت أقترح على أساس أن نهاية بأسرع ما هو أكبر ثم أعلى مؤشر فإنه سيعود غير معروف الذي يقيم إلى false)
إلحاق عنصر واحد
//Append to the end
arrName.push('newName1');
//Prepend to the start
arrName.unshift('newName1');
//Insert at index 1
arrName.splice(1, 0,'newName1');
//1: index number, 0: number of element to remove, newName1: new element
// Replace index 3 (of exists), add new element otherwise.
arrName[3] = 'newName1';
إلحاق عناصر متعددة
//Insert from index number 1
arrName.splice(1, 0,'newElemenet1', 'newElemenet2', 'newElemenet3');
//1: index number from where insert starts,
//0: number of element to remove,
//newElemenet1,2,3: new elements
إلحاق المصفوفة
//join two or more arrays
arrName.concat(newAry1, newAry2);
//newAry1,newAry2: Two different arrays which are to be combined (concatenated) to an existing array
وconcat()
، بطبيعة الحال، يمكن أن تستخدم مع 2 صفائف الأبعاد أيضا. لا حلقات المطلوبة.
وفار و= [ [1، 2]، [3، 4]]؛
وفار ب = [ [ "أ"، "ب"]، [ "ج"، "د"]]؛
وب = b.concat (أ)؛
تنبيه (ب [2] [1])؛ // نتيجة 2
اقتباس فقرة>دع خاصية طول المصفوفة تقوم بالعمل:
myarray[myarray.length] = 'new element value added to the end of the array';
يقوم myarray.length بإرجاع عدد السلاسل في المصفوفة.JS يعتمد على الصفر وبالتالي فإن مفتاح العنصر التالي للمصفوفة سيكون الطول الحالي للمصفوفة.السابق:
var myarray = [0, 1, 2, 3],
myarrayLength = myarray.length; //myarrayLength is set to 4
ونريد فقط لإضافة قصاصة لإضافة غير مدمرة عنصر.
اقتباس فقرة>var newArr = oldArr.concat([newEl]);
إلحاق قيمة إلى مجموعة
const arr = [1, 2, 3];
const val = 4;
arr.concat([val]); // [1, 2, 3, 4]
وأو مجرد:
[...arr, val] // [1, 2, 3, 4]
يمكنك القيام بذلك باستخدام ميزة 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' ]
إذا كنت تريد دمج صفيفين بدون التكرار، فيمكنك تجربة الكود أدناه
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]
أنت .push() تلك القيمة.مثال: array.push(value);
إذا كنت تريد إلحاق قيمة واحدة في صفيف، ببساطة استخدام طريقة الدفع. وسوف تضيف عنصرا جديدا في نهاية المصفوفة.
ولكن إذا كنت تنوي إضافة عناصر متعددة ثم تخزين العناصر في مجموعة جديدة وCONCAT مجموعة الثانية مع مجموعة الأولى ... إما بالطريقة التي ترغب في ذلك.
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);
إلحاق عنصر واحد
لإلحاق عنصر واحد بمصفوفة، استخدم push()
الطريقة التي يوفرها كائن الصفيف:
const fruits = ['banana', 'pear', 'apple']
fruits.push('mango')
console.log(fruits)
push()
يحول المصفوفة الأصلية.
لإنشاء مصفوفة جديدة بدلاً من ذلك، استخدم concat()
طريقة المصفوفة:
const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat('mango')
console.log(allfruits)
لاحظ أن concat()
لا يضيف عنصرًا فعليًا إلى المصفوفة، ولكنه ينشئ مصفوفة جديدة، والتي يمكنك تعيينها لمتغير آخر، أو إعادة تعيينها للمصفوفة الأصلية (الإعلان عنها كـ let
, ، حيث لا يمكنك إعادة تعيين أ const
):
const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat('mango')
console.log(allfruits)
let fruits = ['banana', 'pear', 'apple']
fruits = fruits.concat('mango')
إلحاق عناصر متعددة
لإلحاق عنصر متعدد بمصفوفة، يمكنك استخدام push()
من خلال تسميتها بوسائط متعددة:
const fruits = ['banana', 'pear', 'apple']
fruits.push('mango', 'melon', 'avocado')
console.log(fruits)
يمكنك أيضًا استخدام concat()
الطريقة التي رأيتها من قبل، تمرير قائمة العناصر مفصولة بفاصلة:
const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat('mango', 'melon', 'avocado')
console.log(allfruits)
أو مصفوفة:
const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat(['mango', 'melon', 'avocado'])
console.log(allfruits)
تذكر أنه كما هو موضح سابقًا، لا تؤدي هذه الطريقة إلى تغيير المصفوفة الأصلية، ولكنها تقوم بإرجاع مصفوفة جديدة.
في الأصل نشرت في
ونحن لم يكن لديك وظيفة إلحاقي لصفيف في جافا سكريبت، ولكن لدينا على دفع و <قوية> 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];
وهم ظائف رئيسية لإضافة أو إلحاق قيم جديدة في المصفوفات.
ويمكنك استخدام طريقة الدفع.
Array.prototype.append = function(destArray){
destArray = destArray || [];
this.push.call(this,...destArray);
return this;
}
var arr = [1,2,5,67];
var arr1 = [7,4,7,8];
console.log(arr.append(arr1));// [7, 4, 7, 8, 1, 4, 5, 67, 7]
console.log(arr.append("Hola"))//[1, 2, 5, 67, 7, 4, 7, 8, "H", "o", "l", "a"]
وpush()
يضيف عنصرا جديدا إلى نهاية صفيف.
pop()
يزيل عنصر من نهاية صفيف.
لإلحاق كائن (مثل سلسلة أو رقم) إلى استخدام مجموعة - منتديات
array.push(toAppend);
وإلحاق العناصر على مجموعة
let fruits =["orange","banana","apple","lemon"]; /*array declaration*/
fruits.push("avacado"); /* Adding an element to the array*/
/*displaying elements of the array*/
for(var i=0; i < fruits.length; i++){
console.log(fruits[i]);
}
ويمكنك استخدام الضغط () إذا كنت ترغب في إضافة قيم
مثلا arr.push("Test1", "Test2");
إذا كان لديك مجموعة يمكنك استخدام CONCAT ()
مثلا Array1.concat(Array2)
إذا كان لديك واحد فقط عنصر لإضافة يمكنك أيضا محاولة طول menthod
مثلا array[aray.length] = 'test';