javascript - Bir şeye bir dizinin sonuna nasıl eklenir?


JavaScript'te bir nesneyi (örneğin bir string veya sayı) bir diziye nasıl eklerim?

Cevap #1

Bir dizinin sonuna değer eklemek için Array.prototype.push metodunu kullanın:

// initialize array
var arr = [
  "Hi",
  "Hello",
  "Bonjour"
];

// append new value to the array
arr.push("Hola");

console.log(arr);

Tek bir çağrıda bir diziye birden fazla değer eklemek için push() işlevini 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]);
}

Dikkat edin ki push() yöntemi dizinin güncellenmiş uzunluğunu döndürür.


Güncelleme

Bir dizinin öğelerini başka bir diziye eklemek istiyorsanız, firstArray.concat(secondArray) kullanabilirsiniz:

var arr = [
  "apple",
  "banana",
  "cherry"
];

// Do not forget to assign the result as, unlike push, concat does not change the existing array
arr = arr.concat([
  "dragonfruit",
  "elderberry",
  "fig"
]);

console.log(arr);

Güncelleme

Bu cevaba sadece bir ek olarak, bir dizinin başına herhangi bir değer eklemek (yani ilk indeks) isterseniz, bu amaç için Array.prototype.unshift kullanılabilir.

var arr = [1, 2, 3];
arr.unshift(0);
console.log(arr);

Ayrıca push gibi birden fazla değeri aynı anda eklemeyi de destekler.


Güncelleme

ES6 sözdizimiyle başka bir yol, spread sözdizimi ile yeni bir dizi döndürmektir. Bu, orijinal diziyi değiştirmeden bırakır, ancak işlevsel programlamanın ruhuna uygun şekilde yeni öğeler eklenmiş veya öne eklenmiş yeni bir dizi döndürür.

const arr1 = [
  "Hi",
  "Hello",
  "Bonjour",
];
const arr2 = [
  "Ciao",
  "Hej",
  "Merhaba",
];

const newArr1 = [
  ...arr1,
  "Salut",
];
const newArr2 = [
  "Salut",
  ...arr2,
];
const newArr3 = [
  ...arr1,
  ...arr2,
];

console.log(newArr1, newArr2, newArr3);

Cevap #2

Eğer sadece tek bir değişken ekliyorsanız, push() gayet iyi çalışır. Eğer başka bir dizi eklemeniz gerekiyorsa, concat() kullanın:

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

var ar3 = ar1.concat(ar2);

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

Concat, yeniden atama yapılmadıkça ar1 ve ar2yi etkilemez, örneğin:

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

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

JavaScript Referansı üzerinde çok fazla harika bilgi var.

Cevap #3

Bazı hızlı kıyaslamalar (her test=500.000 eklenen öğe ve sonuçlar birden fazla çalıştırmanın ortalamalarıdır) şunları gösterdi:

Firefox 3.6 (Mac):

  • Küçük diziler: arr[arr.length]=b daha hızlıdır (300ms vs. 800ms)
  • Büyük diziler: arr.push(b) daha hızlıdır (500ms vs. 900ms)

Safari 5.0 (Mac):

  • Küçük diziler: arr[arr.length]=b daha hızlıdır (90ms vs. 115ms)
  • Büyük diziler: arr[arr.length]=b daha hızlıdır (160ms vs. 185ms)

Google Chrome 6.0 (Mac):

  • Küçük diziler: Önemli bir fark yok (ve Chrome ÇOK HIZLI! Sadece ~38ms !!)
  • Büyük diziler: Önemli bir fark yok (160ms)

arr.push() sözdizimini daha çok seviyorum, ama sanırım en azından ham hız açısından arr[arr.length] sürümüyle daha iyi olurum. Ancak bir IE çalıştırmasının sonuçlarını görmek isterdim.

Benim 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;
    }
}

Cevap #4

Bence belirtmeye değer ki push, birden fazla argüman ile çağrılabilir ve bunlar sırayla diziye eklenir. Örneğin:

var arr = ['first'];
arr.push('second', 'third');
console.log(arr);

Bunun bir sonucu olarak, bir diziyi başka bir diziye eklemek için push.apply kullanabilirsiniz, şu şekilde:

var arr = ['first'];
arr.push('second', 'third');
arr.push.apply(arr, ['forth', 'fifth']);
console.log(arr);

Notlandırılmış ES5, push ve apply'in tam olarak ne yaptıkları hakkında daha fazla bilgiye sahiptir.

2016 güncellemesi: spread ile artık o apply'e ihtiyacınız yok, şöyle ki:

var arr = ['first'];
arr.push('second', 'third');

arr.push(...['fourth', 'fifth']);
console.log(arr) ;

Cevap #5

push ve apply fonksiyonlarını iki diziyi eklemek için kullanabilirsiniz.

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

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

array2 öğesini array1'e ekleyecektir. Şimdi array1, [11, 32, 75, 99, 67, 34] değerlerini içeriyor. Bu kod, dizideki her bir öğeyi kopyalamak için for döngüleri yazmaktan çok daha basittir.

Cevap #6

Yeni ES6 spread operatörü ile, iki diziyi push kullanarak birleştirmek çok daha kolay hale geliyor:

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

Bu, arr2 içeriğini arr'nin sonuna ekler.

Babel REPL Örneği

Cevap #7

Eğer arr bir dizi ise ve val eklemek istediğiniz değer ise, şu şekilde kullanın:

arr.push(val);

Örn.

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

Cevap #8

concat kullanın:

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

Cevap #9

Şu anda çoğu tarayıcı tarafından desteklenen ECMAScript 5 (ES5) standardı ile JavaScript'te, array1'i array2'ye eklemek için apply() kullanabilirsiniz.

var array1 = [3, 4, 5];
var array2 = [1, 2];

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

console.log(array2); // [1, 2, 3, 4, 5]

Chrome, Firefox, Internet Explorer ve Edge tarafından desteklenen ECMAScript 6 (ES6) standardıyla JavaScript'te, spread operatörünü 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ü, tarayıcı mantığı çalıştırırken array2.push(...array1); ifadesini array2.push(3, 4, 5); ile değiştirecektir.

Bonus puan

Eğer her iki diziden gelen 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]

Yayılma operatörü (...), bir koleksiyondaki tüm öğeleri yaymak için kullanılır.

Cevap #10

İki diziyi eklemek istiyorsanız -

var a = ['a', 'b'];
var b = ['c', 'd'];

o zaman şunu kullanabilirsin:

var c = a.concat(b);

Ve eğer g kaydını diziye (var a=[]) eklemek istiyorsanız, o zaman şunu kullanabilirsiniz:

a.push('g');

Cevap #11

JavaScript'te bir diziye eklemenin birkaç yolu vardır:

1) push() yöntemi, bir veya daha fazla öğeyi dizinin sonuna ekler ve dizinin yeni uzunluğunu döndürür.

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

Çıktı :

[1, 2, 3, 4, 5]

2) unshift() yöntemi, bir veya daha fazla öğeyi bir dizinin başına ekler ve dizinin yeni uzunluğunu döndürür:

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 diziyi birleştirmek için kullanılır. Bu yöntem mevcut 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) Bir dizinin sonuna bir öğe eklemek için dizinin .length özelliğini kullanabilirsiniz:

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

Çıktı :

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

5) splice() yöntemi, mevcut öğeleri kaldırarak ve/veya yeni öğeler ekleyerek bir dizinin 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 dizine yeni bir indeks belirleyip bir değer atayarak da diziye yeni bir eleman ekleyebilirsiniz:

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

Çıktı :

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

Cevap #12

push() yöntemi, bir dizinin sonuna yeni öğeler ekler ve yeni uzunluğu döndürür. Örnek:

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.push("Kiwi");

// The result of fruits will be:
Banana, Orange, Apple, Mango, Kiwi

Sorunuzun kesin cevabı zaten verilmiş, ama bir diziye öğe eklemenin bazı diğer yollarına da bakalım.

unshift() yöntemi, bir dizinin başına yeni öğeler ekler ve yeni uzunluğu döndürür. Örnek:

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öntemi iki veya daha fazla diziyi birleştirmek için kullanılır. Örnek:

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

Cevap #13

Şimdi, ES6 sözdiziminden yararlanabilir ve sadece yapabilirsin

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

orijinal diziyi değişmez tutmak.

Cevap #14

Tek bir öğe 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 fazla öğe ekle

// 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

Bir 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

Cevap #15

ES6 kullanıyorsanız bunu yapmak için yayma operatörünü kullanabilirsiniz.

var arr = [
    "apple",
    "banana",
    "cherry"
];

var arr2 = [
    "dragonfruit",
    "elderberry",
    "fig"
];

arr.push(...arr2);

Cevap #16

Eğer en yüksek indeksi (örneğin bir değişkende "i" olarak saklanan) biliyorsanız, o zaman şunu yapabilirsiniz

myArray[i + 1] = someValue;

Ancak, bilmiyorsanız o zaman ya kullanabilirsiniz

myArray.push(someValue);

diğer cevapların önerdiği gibi, ya da kullanabilirsiniz

myArray[myArray.length] = someValue;

Dizinin sıfır tabanlı olduğunu unutmayın, bu yüzden .length en yüksek indeksi bir artırarak döndürür.

Ayrıca, sıralama eklemeniz gerekmediğini ve aslında değerleri atlayabileceğinizi unutmayın, tıpkı şu şekilde

myArray[myArray.length + 1000] = someValue;

Bu durumda aradaki değerler tanımsız bir değere sahip olacaktır.

Bu nedenle, bir JavaScript üzerinde döngü yaparken, bir değerin o noktada gerçekten var olduğunu doğrulamak iyi bir uygulamadır.

Bu, aşağıdakine benzer bir şeyle yapılabilir:

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

Eğer dizide sıfır olmadığından eminseniz, sadece şunu yapabilirsiniz:

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

Elbette, bu durumda koşul olarak myArray[i] kullanmadığınızdan emin olun (çünkü bazı kişiler internette, i en yüksek indeksi aştığı anda undefined döneceğini ve bunun false olarak değerlendirileceğini öne sürüyor).

Cevap #17

JavaScript Yayılım Operatörü Sözdizimini kullanarak bunu yapabilirsiniz:

// Initialize the array

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

// Append a new value to the array

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

// Or you can add a variable value

var testValue = "Cool";

arr = [...arr, testValue ];

console.log(arr);

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

Cevap #18

concat(), elbette, iki boyutlu dizilerle de kullanılabilir. Döngüye gerek yok.

var a = [
    [1, 2],
    [3, 4] ];

var b = [
    ["a", "b"],
    ["c", "d"] ];

b = b.concat(a);

alert(b[2][1]); // Result: 2

Cevap #19

Sadece bir öğenin yıkıcı olmayan şekilde eklenmesi için bir kesit eklemek istiyorum.

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

Cevap #20

Dizi uzunluk özelliğinin işi yapmasına izin ver:

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

myarray.length dizideki string sayısını döndürür. JavaScript sıfır tabanlıdır, bu yüzden dizinin bir sonraki eleman anahtarı dizinin mevcut uzunluğu olacaktır.

Örnek :

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

İlgili makaleler