Burada bu soruya gerçekten yaratıcı cevaplar var. İşte dizilerle yeni başlayanlar için basit bir çözüm. İstenirse ECMAScript 3 uyumlu tarayıcılara kadar çalışabilir hale getirilebilir.
Başlamadan önce ekleme hakkında bir şeyler öğrenin.
Mozilla Geliştirici Ağı: Array.prototype.splice ()
İlk olarak, iki önemli formunu anlayın .splice().
let a1 = [1,2,3,4],
a2 = [1,2];
Yöntem 1) İstenen bir dizinden başlayarak x (deleteCount) öğelerini kaldırın.
let startIndex = 0,
deleteCount = 2;
a1.splice(startIndex, deleteCount);
Yöntem 2) İstenen bir başlangıç dizininden sonra dizinin sonuna kadar öğeleri kaldırın.
a1.splice(2);
Kullanarak .splice(), a1yukarıdaki iki formdan birini kullanarak baş ve kuyruk dizilerini ayırmak bir amaç olabilir .
Yöntem # 1 kullanıldığında, dönüş değeri başlık ve a1kuyruk olur.
let head = a1.splice(startIndex, deleteCount);
Şimdi, bir çırpıda düştü, baş, gövde ( a2) ve kuyruğu birleştirin
[].concat(head, a2, a1);
Dolayısıyla, bu çözüm şimdiye kadar sunulan diğer çözümlerden çok gerçek dünyaya benziyor. Legolarla yapacağın bu değil mi? ;-) Burada yöntem # 2 kullanılarak yapılan bir işlev var.
function insertArray(target, body, startIndex)
{
let tail = target.splice(startIndex);
return [].concat(target, body, tail);
}
let newArray = insertArray([1, 2, 3, 4], ["a", "b"], 2);
Daha kısa:
function insertArray(target, body, startIndex)
{
return [].concat(target, body, target.splice(startIndex));
}
Daha güvenli:
function insertArray(target, body, startIndex)
{
const ARRAY_START = 0,
ARRAY_END = target.length - 1,
ARRAY_NEG_END = -1,
START_INDEX_MAGNITUDE = Math.abs(startIndex);
if (startIndex === ARRAY_START) {
throw new Error("The value for startIndex cannot be zero (0).");
}
if (startIndex === ARRAY_END || startIndex === ARRAY_NEG_END) {
throw new Error("The startIndex cannot be equal to the last index in target, or -1.");
}
if (START_INDEX_MAGNITUDE >= ARRAY_END) {
throw new Error("The absolute value of startIndex must be less than the last index.");
}
return [].concat(target, body, target.splice(startIndex));
}
Bu çözümün avantajları şunları içerir:
1) Çözüme basit bir öncül hakimdir - boş bir diziyi doldurun.
2) Baş, vücut ve kuyruk terminolojisi doğaldır.
3) Çift çağrı yok .slice(). Hiç dilimleme yok.
4) Hayır .apply(). Son derece gereksiz.
5) Yöntem zincirlemesinden kaçınılır.
6) ECMAScript 3 ve 5'te veya varyerine kullanarak basitçe çalışır .letconst
** 7) Sunulan diğer çözümlerden farklı olarak vücuda tokatlanacak bir baş ve kuyruk olmasını sağlar. Sınırlardan önce veya sonra bir dizi ekliyorsanız, en azından kullanıyor olmalısınız .concat()!!!!
Not: Yayılma opearatörünün kullanılması ..., tüm bunların gerçekleştirilmesini çok daha kolay hale getirir.