Yanıtlar:
Array.prototype.push
Bir diziye değer eklemek için yöntemi kullanın :
// initialize array
var arr = [
"Hi",
"Hello",
"Bonjour"
];
// append new value to the array
arr.push("Hola");
console.log(arr);
push()
Tek bir çağrıda bir diziye birden fazla değer eklemek için bu işlevi kullanabilirsiniz :
// 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]);
}
Güncelleme
Bir dizinin öğelerini başka bir diziye eklemek istiyorsanız, şunları kullanabilirsiniz firstArray.concat(secondArray)
:
var arr = [
"apple",
"banana",
"cherry"
];
arr = arr.concat([
"dragonfruit",
"elderberry",
"fig"
]);
console.log(arr);
Güncelleme
İlk dizinin anlamı olan bir dizinin başına herhangi bir değer eklemek istiyorsanız, bu yanıta ek olarak Array.prototype.unshift
, bu amaçla kullanabilirsiniz .
var arr = [1, 2, 3];
arr.unshift(0);
console.log(arr);
Aynı anda aynı anda birden fazla değer eklemeyi de destekler push
.
for
(kullanma .forEach
).
length
. Tercüman bu konuda harika bir iş çıkarır ve onu optimize etseniz de etmeseniz de Gerçek Dünya'da herhangi bir fark yaratmaz. Diziniz o kadar büyük olursa, optimizasyon .length
gerçekten yardımcı olacaktır, büyük olasılıkla bir dizi artık doğru veri yapısı değildir. Kullanmanın forEach
avantajları vardır, ancak her yinelemenin işlev çağrısı bir maliyete neden olduğu ve hiçbir şey kaydetmediği için, artan performansın bunlardan biri olacağı şüphelidir.
length
Bir dizinin özelliği, onu her aradığınızda hesaplanmaz array
; bu, yalnızca diziyi değiştirdiğinizde güncellenen nesnede depolanan bir değişkendir . Bu nedenle arr.length
, for
koşula dahil olmanın hiçbir performans maliyeti yoktur .
forEach
geri arama işlevlerini satır içi yaparlar (bazıları muhtemelen bunu zaten yapar) ve işlev tarafından yorumlanmak yerine derlenecek kadar sık çağrılırsa, oluşturulan makine kodunda bir fark olmaz. çalışma zamanı. Aynı tavsiye, aslında montajcı olmayan herhangi bir dil için de geçerlidir.
Yalnızca tek bir değişken ekliyorsanız push()
iyi çalışır. Başka bir dizi eklemeniz gerekiyorsa, şunu kullanın concat()
:
var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];
var ar3 = ar1.concat(ar2);
alert(ar1);
alert(ar2);
alert(ar3);
Concat etkilemez ar1
ve ar2
yeniden atanmadıkça, örneğin:
var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];
ar1 = ar1.concat(ar2);
alert(ar1);
How do I append to an array in JavaScript?
ama concat
aslında yaratır bir yeni dizi. Bu önemli bir fark! Bunun yerine Omnimike'nin aşağıdaki cevabının aslında en iyisi olduğunu söyleyebilirim: Push.apply komutunu kullanarak yeni bir dizi oluşturmadan mevcut bir diziye bütün bir diziyi itin.
ar1 = ar1.concat(ar2);
da ekleyebilirsinizar1
ar1
, eklemek ar2
ve sonra yeni diziyi döndürmektir. Atama bölümünü ( ar1 = ...
) bu kod satırından çıkarmanız ve orijinalin ar1
aslında değişmediğini göreceksiniz . Bir kopya yapmaktan kaçınmak istiyorsanız, ihtiyacınız olacak push
. Bana inanma , docs'a inan : "concat () yöntemi yeni bir dizi döndürür" için dokümanlardaki ilk cümle concat
.
ar2
yukarıdaki Diziler eklenmesi söz konusu olduğunda karışıklık yaratacaktır . .push
Senaryo sonucu olacaktır = [ar1, [ar2]]
. .concat bu sorunu çözer, ancak hızdan ve yeni bir diziden fedakarlık ederek. .push
Dizi eklerinde düzgün kullanmak için önce içerilen öğeyi döngüye alın ve her birini itin. ar2.forEach(each => { ar1.push(each); });
Bazı hızlı kıyaslamalar (her test = 500 bin ekteki öğe ve sonuçlar birden fazla çalışmanın ortalamasıdır) aşağıdakileri gösterdi:
Firefox 3.6 (Mac):
arr[arr.length] = b
daha hızlı (300ms - 800ms)arr.push(b)
daha hızlı (500ms ve 900ms)Safari 5.0 (Mac):
arr[arr.length] = b
daha hızlıdır (90ms ve 115ms)arr[arr.length] = b
daha hızlı (160ms - 185ms)Google Chrome 6.0 (Mac):
arr.push()
Sözdizimini daha çok seviyorum , ama arr[arr.length]
en azından ham hızda Sürüm ile daha iyi olacağımı düşünüyorum . Yine de bir IE çalıştırmak sonuçlarını görmek isterim.
Kıyaslama döngülerim:
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;
}
}
Ben itme diziye sırayla eklenecek birden fazla argüman ile çağrılabilir söz düşünüyorum. Örneğin:
var arr = ['first'];
arr.push('second', 'third');
console.log(arr);
Bunun bir sonucu olarak push.apply komutunu aşağıdaki gibi başka bir diziye eklemek için kullanabilirsiniz:
var arr = ['first'];
arr.push('second', 'third');
arr.push.apply(arr, ['forth', 'fifth']);
console.log(arr);
Ek açıklamalı ES5 , itme ve uygulama işlemlerinin tam olarak ne yaptığı hakkında daha fazla bilgiye sahiptir .
2016 güncellemesi: yayılmış olarak , apply
artık buna ihtiyacınız yok, örneğin:
var arr = ['first'];
arr.push('second', 'third');
arr.push(...['fourth', 'fifth']);
console.log(arr) ;
Array.prototype.push.apply()
ama kullanmayı tercih ederim .
İki diziyi eklemek için kullanabilir push
ve apply
çalışabilirsiniz.
var array1 = [11, 32, 75];
var array2 = [99, 67, 34];
Array.prototype.push.apply(array1, array2);
console.log(array1);
Bu ekler array2
için array1
. Şimdi array1
içeriyor [11, 32, 75, 99, 67, 34]
. Bu kod, for
dizideki her bir öğeyi kopyalamak için döngüler yazmaktan çok daha basittir .
...
kullanıyorsanız, const a1 = [] const a2 = [5,6,7] const.push(...a2)
düzenleme uygulamak yerine operatörü de kullanabilirsiniz : sözdizimi vurgulama
array1.concat(array2)
bu durumda. Çağrısı push
gereksiz görünüyor.
Yeni ES6 spread operatörü ile iki diziyi kullanarak birleştirmek push
daha da kolaylaşır:
var arr = [1, 2, 3, 4, 5];
var arr2 = [6, 7, 8, 9, 10];
arr.push(...arr2);
console.log(arr);
Bu işlemin içeriğini arr2
sonuna ekler arr
.
Bir arr
dizi ve val
eklemek istediğiniz değerse kullanın:
arr.push(val);
Örneğin
var arr = ['a', 'b', 'c'];
arr.push('d');
console.log(arr);
Kullanım concat
:
a = [1, 2, 3];
b = [3, 4, 5];
a = a.concat(b);
console.log(a);
Şu anda çoğu tarayıcı tarafından desteklenen ECMAScript 5 standardına sahip Javascript, apply()
eklemek array1
için kullanabilirsiniz array2
.
var array1 = [3, 4, 5];
var array2 = [1, 2];
Array.prototype.push.apply(array2, array1);
console.log(array2); // [1, 2, 3, 4, 5]
Chrome ve FF ve IE Edge tarafından desteklenen ECMAScript 6 standardına sahip Javascript , spread
işleci kullanabilirsiniz :
"use strict";
let array1 = [3, 4, 5];
let array2 = [1, 2];
array2.push(...array1);
console.log(array2); // [1, 2, 3, 4, 5]
spread
Operatör yerini alacak array2.push(...array1);
olan array2.push(3, 4, 5);
tarayıcı mantığı düşünme olduğunda.
Bonus puanı
Her iki dizideki tüm öğeleri saklamak için başka bir değişken oluşturmak isterseniz, bunu yapabilirsiniz:
ES5 var combinedArray = array1.concat(array2);
ES6 const combinedArray = [...array1, ...array2]
Forma operatörü ( ...
) bir koleksiyondaki tüm öğeleri dağıtır.
İki dizi eklemek istiyorsanız -
var a = ['a', 'b'];
var b = ['c', 'd'];
o zaman kullanabilirsiniz:
var c = a.concat(b);
Ve g
array ( var a=[]
) öğesine kayıt eklemek istiyorsanız şunu kullanabilirsiniz:
a.push('g');
push()
Yöntem, bir dizinin sonuna yeni öğeler ekler ve yeni uzunluğu verir. Misal:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.push("Kiwi");
// The result of fruits will be:
Banana, Orange, Apple, Mango, Kiwi
Sorunuzun tam cevabı zaten cevaplandı, ancak bir diziye öğe eklemenin diğer bazı yollarına bakalım.
unshift()
Yöntemi bir dizinin başlangıcına yeni öğeler ekler ve yeni uzunluğunu döndürür. Misal:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.unshift("Lemon", "Pineapple");
// The result of fruits will be:
Lemon, Pineapple, Banana, Orange, Apple, Mango
Ve son olarak, concat()
yöntem iki veya daha fazla diziyi birleştirmek için kullanılır. Misal:
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'e bir dizi eklemenin birkaç yolu vardır:
1)push()
bir yöntem bir dizinin sonuna, bir ya da daha fazla öğe ekler ve dizinin yeni uzunluğu verir.
var a = [1, 2, 3];
a.push(4, 5);
console.log(a);
Çıktı:
[1, 2, 3, 4, 5]
2)unshift()
yöntemi bir dizinin başına bir veya daha fazla öğe ekler ve dizinin yeni uzunluğu verir:
var a = [1, 2, 3];
a.unshift(4, 5);
console.log(a);
Çıktı:
[4, 5, 1, 2, 3]
3)concat()
yöntemi, iki veya daha fazla dizi birleştirme için kullanılır. Bu yöntem varolan dizileri değiştirmez , bunun yerine yeni bir dizi döndürür.
var arr1 = ["a", "b", "c"];
var arr2 = ["d", "e", "f"];
var arr3 = arr1.concat(arr2);
console.log(arr3);
Çıktı:
[ "a", "b", "c", "d", "e", "f" ]
4) Dizinin .length
sonuna bir öğe eklemek için dizinin özelliğini kullanabilirsiniz:
var ar = ['one', 'two', 'three'];
ar[ar.length] = 'four';
console.log( ar );
Çıktı:
["one", "two", "three", "four"]
5)splice()
Yöntem, mevcut elemanları çıkarılması ve / veya yeni elemanları eklenerek bir dizi içeriğini değiştirir:
var myFish = ["angel", "clown", "mandarin", "surgeon"];
myFish.splice(4, 0, "nemo");
//array.splice(start, deleteCount, item1, item2, ...)
console.log(myFish);
Çıktı:
["angel", "clown", "mandarin", "surgeon","nemo"]
6) Bir diziye yeni bir dizin belirleyip bir değer atayarak da yeni bir öğe ekleyebilirsiniz:
var ar = ['one', 'two', 'three'];
ar[3] = 'four'; // add new element to ar
console.log(ar);
Çıktı:
["one", "two","three","four"]
push
bunu yapar: yeni öğeleri üzerine iterek orijinal diziyi değiştirir. Bunu yanlış mı okuyorum yoksa düzenlenmeli mi?
Şimdi, ES6 sözdiziminden yararlanabilir ve şunları yapabilirsiniz:
let array = [1, 2];
console.log([...array, 3]);
orijinal diziyi değişmez tutmak.
En yüksek dizini biliyorsanız ("i" değişkeninde depolanan gibi)
myArray[i + 1] = someValue;
Ancak bilmiyorsanız,
myArray.push(someValue);
önerilen diğer cevaplar gibi, veya kullanabilirsiniz
myArray[myArray.length] = someValue;
Dizinin sıfır temelli olduğunu unutmayın, bu nedenle .length en yüksek dizini ve bir dizini döndürür.
Ayrıca, sırayla eklemeniz gerekmediğini ve değerleri olduğu gibi atlayabileceğinizi unutmayın.
myArray[myArray.length + 1000] = someValue;
Bu durumda, aradaki değerlerin tanımsız bir değeri olacaktır.
Bu nedenle, bir JavaScript'te döngü yaparken, o noktada bir değerin gerçekten var olduğunu doğrulamak iyi bir uygulamadır.
Bu, aşağıdaki gibi bir şeyle yapılabilir:
if(myArray[i] === "undefined"){ continue; }
Dizide sıfır bulunmadığından eminseniz, şunları yapabilirsiniz:
if(!myArray[i]){ continue; }
Tabii bu durumda, myArray [i] koşulu olarak kullanmadığınızdan emin olun (internet üzerinden bazı insanlar, en yüksek endeksten daha büyük olan en büyük endeksten daha sonra, yanlış)
"undefined"
. Okumalı void 0
! "undefined"
bir dizedir ve "undefined" !== void 0
bu nedenle if(myArray[i]
, dizindeki dizi, i
eşdeğer içeriğe sahip dizeye ayarlanmadığı sürece yanlıştır 'u'+'n'+'d'+'e'+'f'+'i'+'n'+'e'+'d'
. Ayrıca kullanmak undefined
yerine kullanmamanız gerektiğini unutmayın void 0
. Çünkü void 0
her zaman tanımsız değerdir süre undefined
gibi bir şey aracılığıyla tanımlanabilir function x(undefined) { alert(undefined) } x("hello world")
birileri kazara ayarlanmış olmadığından emin olamaz bu yüzden, window["undefined"]=1
ya da benzer.
Tek Eleman Ekle
//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';
Birden Çok Öğe Ekleme
//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
Dizi ekle
//join two or more arrays
arrName.concat(newAry1, newAry2);
//newAry1,newAry2: Two different arrays which are to be combined (concatenated) to an existing array
arrName.push('newElemenet1, newElemenet2, newElemenet3')
?
arrName
uzun olduğunu düşündüm 1
.
myarray[myarray.length] = 'new element value added to the end of the array';
myarray.length dizideki dizelerin sayısını döndürür. JS sıfır tabanlıdır, bu nedenle dizinin bir sonraki öğe anahtarı dizinin geçerli uzunluğu olacaktır. EX:
var myarray = [0, 1, 2, 3],
myarrayLength = myarray.length; //myarrayLength is set to 4
Sadece bir öğenin tahribatsız eklenmesi için bir snippet eklemek istiyorum.
var newArr = oldArr.concat([newEl]);
Yana Array.prototype.push bir dizinin sonuna bir veya daha fazla eleman ekler ve dizinin yeni uzunluğunu döndürür bazen istediğimiz, biz şöyle bir şey yapabilirsiniz, böylece sadece yeni yukarı güncel dizisini almak için:
const arr = [1, 2, 3];
const val = 4;
arr.concat([val]); // [1, 2, 3, 4]
Ya da sadece:
[...arr, val] // [1, 2, 3, 4]
yeni javascript Es 6 özelliğini kullanarak yapabilirsiniz:
// 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' ]
2 diziyi kopya olmadan birleştirmek istiyorsanız aşağıdaki kodu deneyebilirsiniz
array_merge = function (arr1, arr2) {
return arr1.concat(arr2.filter(function(item){
return arr1.indexOf(item) < 0;
}))
}
kullanımı:
array1 = ['1', '2', '3']
array2 = ['2', '3', '4', '5']
combined_array = array_merge(array1, array2)
Çıktı: [1,2,3,4,5]
Bir diziye tek bir öğe eklemek push()
için Array nesnesi tarafından sağlanan yöntemi kullanın :
const fruits = ['banana', 'pear', 'apple']
fruits.push('mango')
console.log(fruits)
push()
orijinal diziyi değiştirir.
Bunun yerine yeni bir dizi oluşturmak için concat()
Array yöntemini kullanın :
const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat('mango')
console.log(allfruits)
Uyarı concat()
aslında diziye bir öğe eklemek, ancak başka bir değişkene atamak veya orijinal dizideki (olarak ilan etmek yeniden atayabilirsiniz yeni bir dizi oluşturur vermez let
gibi değil yeniden atamakta bir can, const
):
const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat('mango')
console.log(allfruits)
let fruits = ['banana', 'pear', 'apple']
fruits = fruits.concat('mango')
Bir diziye birden çok öğe eklemek için, öğeyi push()
birden çok bağımsız değişkenle çağırarak kullanabilirsiniz :
const fruits = ['banana', 'pear', 'apple']
fruits.push('mango', 'melon', 'avocado')
console.log(fruits)
concat()
Virgülle ayrılmış öğelerin bir listesini ileterek daha önce gördüğünüz yöntemi de kullanabilirsiniz :
const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat('mango', 'melon', 'avocado')
console.log(allfruits)
veya bir dizi:
const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat(['mango', 'melon', 'avocado'])
console.log(allfruits)
Daha önce açıklandığı gibi bu yöntemin orijinal diziyi değiştirmediğini, ancak yeni bir dizi döndürdüğünü unutmayın.
Bir diziye tek bir değer eklemek istiyorsanız, push yöntemini kullanmanız yeterlidir. Dizinin sonuna yeni bir öğe ekleyecektir.
Ancak, birden çok öğe eklemek istiyorsanız, öğeleri yeni bir dizide saklayın ve ikinci diziyi ilk diziyle birleştirin ... istediğiniz şekilde.
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);
Javascript'te Array için ekleme fonksiyonumuz yok, ancak itme ve kaydırma yok, aşağıdaki diziye sahip olduğunuzu hayal edin:
var arr = [1, 2, 3, 4, 5];
ve bu diziye bir değer eklemeyi seviyoruz, yapabiliriz, arr.push (6) ve dizinin sonuna 6 ekleyecektir:
arr.push(6); // return [1, 2, 3, 4, 5, 6];
Ayrıca unshift kullanabiliriz, bunu nasıl uygulayabileceğimize bakın:
arr.unshift(0); //return [0, 1, 2, 3, 4, 5];
Dizilere yeni değerler eklemek veya dizilere yeni değerler eklemek için ana işlevlerdir.
Push yöntemini kullanabilirsiniz.
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()
dizinin sonuna yeni bir öğe ekler.
pop()
bir öğeyi dizinin sonundan kaldırır.
Bir diziye nesne (dize veya sayı gibi) eklemek için şunu kullanın -
array.push(toAppend);