Bir ├Â─čeyi belirli bir dizindeki (JavaScript) bir diziye nas─▒l ekleyebilirim?


Al─▒nan cevaba git


Bir tarzda bir JavaScript dizi ekleme y├Ântemi ar─▒yorum:

 arr.insert(index, item)
 

Tercihen jQuery'de, ancak herhangi bir JavaScript uygulamas─▒ bu noktada yapacakt─▒r.


2655









Cevap say─▒s─▒n─▒ say: 16






─░stedi─činiz splice yerel dizi nesnesindeki i┼člevdir.

arr.splice(index, 0, item); ekleyecektir item i├žine arr belirtilen endeksine (silme 0 ilk ├Â─čeleri oldu─čunu, bu sadece bir ekleme var).

Bu ├Ârnekte bir dizi yarataca─č─▒z ve buna bir eleman ekleyelim: 2

 var arr = [];
arr[0] = "Jani";
arr[1] = "Hege";
arr[2] = "Stale";
arr[3] = "Kai Jim";
arr[4] = "Borge";

console.log(arr.join());
arr.splice(2, 0, "Lene");
console.log(arr.join()); 


4312







Bunu Array.insert yaparak y├Ântemi uygulayabilirsiniz :

 Array.prototype.insert = function ( index, item ) {
    this.splice( index, 0, item );
};
 

Sonra gibi kullanabilirsiniz:

 var arr = [ 'A', 'B', 'D', 'E' ];
arr.insert(2, 'C');

// => arr == [ 'A', 'B', 'C', 'D', 'E' ]
 

265







Ekleme d─▒┼č─▒nda, orijinal diziyi de─či┼čtirmeyecek, ancak eklenen ├Â─čeyle yeni bir dizi olu┼čturacak olan bu yakla┼č─▒m─▒ kullanabilirsiniz. Genellikle, m├╝mk├╝n oldu─čunda mutasyondan ka├ž─▒nmal─▒s─▒n─▒z. Burada ES6 spread operat├Âr├╝n├╝ kullan─▒yorum.

 const items = [1, 2, 3, 4, 5]

const insert = (arr, index, newItem) => [
  // part of the array before the specified index
  ...arr.slice(0, index),
  // inserted item
  newItem,
  // part of the array after the specified index
  ...arr.slice(index)
]

const result = insert(items, 1, 10)

console.log(result)
// [1, 10, 2, 3, 4, 5] 

Bu, yeni i┼čle├ž i├žin rest operat├Âr├╝n├╝ kullanmak ├╝zere i┼člevi biraz de─či┼čtirerek birden fazla ├Â─če eklemek ve bunu d├Ând├╝r├╝len sonu├žta da yaymak i├žin kullan─▒labilir.

 const items = [1, 2, 3, 4, 5]

const insert = (arr, index, ...newItems) => [
  // part of the array before the specified index
  ...arr.slice(0, index),
  // inserted items
  ...newItems,
  // part of the array after the specified index
  ...arr.slice(index)
]

const result = insert(items, 1, 10, 20)

console.log(result)
// [1, 10, 20, 2, 3, 4, 5] 


106







├ľzel dizi insert y├Ântemleri

1. Birden fazla arg├╝man ve zincirleme deste─či ile

 /* Syntax:
   array.insert(index, value1, value2, ..., valueN) */

Array.prototype.insert = function(index) {
    this.splice.apply(this, [index, 0].concat(
        Array.prototype.slice.call(arguments, 1)));
    return this;
};
 

Birden ├žok ├Â─če ekleyebilir (yerelde oldu─ču splice gibi) ve zincirlemeyi destekler:

 ["a", "b", "c", "d"].insert(2, "X", "Y", "Z").slice(1, 6);
// ["b", "X", "Y", "Z", "c"]
 

2. dizi-tipi arg├╝manlar ile destek birle┼čtirme ve zincirleme

 /* Syntax:
   array.insert(index, value1, value2, ..., valueN) */

Array.prototype.insert = function(index) {
    index = Math.min(index, this.length);
    arguments.length > 1
        && this.splice.apply(this, [index, 0].concat([].pop.call(arguments)))
        && this.insert.apply(this, arguments);
    return this;
};
 

Verilen dizi ile arg├╝manlardan gelen dizileri birle┼čtirir ve ayr─▒ca zincirlemeyi destekler:

 ["a", "b", "c", "d"].insert(2, "V", ["W", "X", "Y"], "Z").join("-");
// "a-b-V-W-X-Y-Z-c-d"
 

DEMO: http://jsfiddle.net/UPphH/


73







Bir seferde bir diziye birden fazla ├Â─če eklemek istiyorsan─▒z, ┼ču Stack Overflow cevab─▒na bak─▒n: Bir diziyi javascript'te bir diziye eklemek i├žin daha iyi bir yol

Ayr─▒ca her iki ├Ârne─či de g├Âsteren baz─▒ fonksiyonlar:

 function insertAt(array, index) {
    var arrayToInsert = Array.prototype.splice.apply(arguments, [2]);
    return insertArrayAt(array, index, arrayToInsert);
}

function insertArrayAt(array, index, arrayToInsert) {
    Array.prototype.splice.apply(array, [index, 0].concat(arrayToInsert));
    return array;
}
 

Sonunda burada bir jsFiddle yani kendiniz i├žin g├Ârebilirsiniz: http://jsfiddle.net/luisperezphd/Wc8aS/

Ve bu fonksiyonlar─▒ nas─▒l kulland─▒─č─▒n─▒z:

 // if you want to insert specific values whether constants or variables:
insertAt(arr, 1, "x", "y", "z");

// OR if you have an array:
var arrToInsert = ["x", "y", "z"];
insertArrayAt(arr, 1, arrToInsert);
 

35







D├╝zg├╝n i┼člevsel programlama ve zincirleme ama├žlar─▒ i├žin, bir bulu┼č Array.prototype.insert() esast─▒r. Ger├žekten, tamamen anlams─▒z bir bo┼č dizi yerine mutasyona u─čram─▒┼č diziyi d├Ând├╝rm├╝┼č olsayd─▒, ek yeri m├╝kemmel olabilirdi. Yani i┼čte gidiyor

 Array.prototype.insert = function(i,...rest){
  this.splice(i,0,...rest)
  return this
}

var a = [3,4,8,9];
document.write("<pre>" + JSON.stringify(a.insert(2,5,6,7)) + "</pre>"); 

Tamam, Array.prototype.splice() bir tanesi orijinal diziyi de─či┼čtiriyor ve baz─▒lar─▒ "size ait olmayan─▒ de─či┼čtirmemelisiniz" gibi ┼čikayet edebilir ve bu da do─čru olabilir. Bu y├╝zden halk─▒n refah─▒ Array.prototype.insert() i├žin orijinal diziyi de─či┼čtirmeyen ba┼čka birine vermek istiyorum . ─░┼čte gidiyor;

 Array.prototype.insert = function(i,...rest){
  return this.slice(0,i).concat(rest,this.slice(i));
}

var a = [3,4,8,9],
    b = a.insert(2,5,6,7);
console.log(JSON.stringify(a));
console.log(JSON.stringify(b)); 


20


2016-05-13





Bu durumda saf JavaScript kullanman─▒z─▒ ├Âneririz , ayr─▒ca JavaScript'te insert y├Ântemi yoktur, ancak sizin i├žin i┼či yapan yerle┼čik Array y├Ântemi olan bir y├Ântemimiz var, buna splice denir ...

Bakal─▒m ne ekleyelim () ...

Splice () y├Ântemi, mevcut ├Â─čeleri kald─▒rarak ve / veya yeni ├Â─čeler ekleyerek bir dizinin i├žeri─čini de─či┼čtirir.

Tamam, a┼ča─č─▒da bu dizinin oldu─čunu hayal edin:

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

Bu ┼čekilde kald─▒rabiliriz 3 :

 arr.splice(arr.indexOf(3), 1);
 

3 de─čerini d├Ând├╝r├╝r, ancak arr de─čerini ┼čimdi kontrol edersek, biz:

 [1, 2, 4, 5]
 

┼×imdiye kadar, ├žok iyi, ama splice kullanarak diziye nas─▒l yeni bir eleman ekleyebiliriz? Hadi arrda 3 tane koyal─▒m ...

 arr.splice(2, 0, 3);
 

Bakal─▒m ne yapt─▒k?

Biz kullanmak splice yine ancak ikinci arg├╝man─▒ bu kez, biz ge├žmesi 0 , hi├žbir ├Â─čeyi silmek istedi─činiz arac─▒, ama ayn─▒ zamanda, biz ikinci dizinde eklenecektir 3't├╝r ├╝├ž├╝nc├╝ arg├╝man ekleyin ...

Ayn─▒ anda hem silip hem de ekleyebilece─čimizin fark─▒nda olmal─▒s─▒n─▒z; ├Ârne─čin, ┼čimdi yapabiliriz:

 arr.splice(2, 2, 3);
 

Bu , dizin 2'deki 2 ├Â─čeyi silecek , ard─▒ndan dizin 2'ye 3 ekleyecek ve sonu├ž ┼č├Âyle olacakt─▒r:

 [1, 2, 3, 5];
 

Bu, ekleme i├žindeki her bir ├Â─čenin nas─▒l ├žal─▒┼čt─▒─č─▒n─▒ g├Âsteriyor:

array.splice (start, deleteCount, item1, item2, item3 ...)


14







Tek Eleman─▒ belirli bir dizine ekle

 //Append at specific position(here at index 1)
arrName.splice(1, 0,'newName1');
//1: index number, 0: number of element to remove, newName1: new element


//Append at specific position (here at index 3)
arrName[3] = 'newName1';
 

Belirli bir dizinde Birden ├çok ├ľ─če Ekleme

 //Append from index number 1
arrName.splice(1, 0,'newElemenet1', 'newElemenet2', 'newElemenet3');
//1: index number from where append start, 
//0: number of element to remove, 
//newElemenet1,2,3: new elements
 

9







Kullan─▒m─▒yla birlikte bir ba┼čka olas─▒ ├ž├Âz├╝m Array#reduce .

 var arr = ["apple", "orange", "raspberry"],
    arr2 = [1, 2, 4];

function insert(arr, item, index) {
    arr = arr.reduce(function(s, a, i) {
      i == index ? s.push(item, a) : s.push(a);
      return s;
    }, []);   
    console.log(arr);
}

insert(arr, "banana", 1);
insert(arr2, 3, 2); 


6







Bu cevap daha ├Ânce cevaplanm─▒┼č olsa da, alternatif bir yakla┼č─▒m i├žin bu notu ekliyorum.

Bilinen say─▒da ├Â─čeyi bir diziye, belirli konumlara, tan─▒mlay─▒c─▒ bir d├╝zende s─▒ralanmad─▒─č─▒ garanti edilmeyen bir "ili┼čkisel diziden" (yani bir nesneyi) ├ž─▒kard─▒klar─▒ i├žin yerle┼čtirmek istedim . Sonu├žta ortaya ├ž─▒kan dizinin bir nesneler dizisi olmas─▒n─▒ istedim, ancak dizilerin s─▒ralar─▒n─▒ garanti etti─či i├žin nesnelerin dizide belirli bir d├╝zende olmas─▒n─▒ istedim. Bu y├╝zden bunu yapt─▒m.

─░lk ├Ânce kaynak nesne, PostgreSQL'den al─▒nan bir JSONB dizgisi. Her alt nesnedeki "order" ├Âzelli─čine g├Âre s─▒ralanmas─▒n─▒ istedim.

 var jsonb_str = '{"one": {"abbr": "", "order": 3}, "two": {"abbr": "", "order": 4}, "three": {"abbr": "", "order": 5}, "initialize": {"abbr": "init", "order": 1}, "start": {"abbr": "", "order": 2}}';

var jsonb_obj = JSON.parse(jsonb_str);
 

Nesnedeki d├╝─č├╝mlerin say─▒s─▒ bilindi─činden, ├Ânce belirtilen uzunlukta bir dizi olu┼čturdum:

 var obj_length = Object.keys(jsonb_obj).length;
var sorted_array = new Array(obj_length);
 

Ve sonra nesneyi yineleyerek, yeni olu┼čturulan ge├žici nesneleri, dizide istenen yerlere ger├žekten herhangi bir "s─▒ralama" yap─▒lmadan yerle┼čtirerek yerle┼čtirin.

 for (var key of Object.keys(jsonb_obj)) {
  var tobj = {};
  tobj[key] = jsonb_obj[key].abbr;

  var position = jsonb_obj[key].order - 1;
  sorted_array[position] = tobj;
}

console.dir(sorted_array);
 

5







Bunu denedim ve iyi ├žal─▒┼č─▒yor!

 var initialArr = ["India","China","Japan","USA"];
initialArr.splice(index, 0, item);
 

Dizin, ├Â─čeyi eklemek veya silmek istedi─činiz konumdur. 0, yani ikinci parametreler, kald─▒r─▒lacak dizinden eleman say─▒s─▒n─▒ tan─▒mlar, dizide yapmak istedi─činiz yeni giri┼člerdir. Bir veya daha fazla olabilir.

 initialArr.splice(2, 0, "Nigeria");
initialArr.splice(2, 0, "Australia","UK");
 

4







Bununla hala problemi olan ve yukar─▒daki t├╝m se├ženekleri deneyen ve hi├ž almayan herkes. ├ç├Âz├╝m├╝m├╝ payla┼č─▒yorum, bu, nesnenin ├Âzelliklerini ve diziyi a├ž─▒k├ža belirtmek istemedi─činizi dikkate almakt─▒r.

 function isIdentical(left, right){
    return JSON.stringify(left) === JSON.stringify(right);
}

function contains(array, obj){
    let count = 0;
    array.map((cur) => {
          if(this.isIdentical(cur, obj)) count++;
    });
    return count > 0;
}
 

Bu, referans dizisini yinelemenin ve kontrol etmek istedi─činiz nesneyle kar┼č─▒la┼čt─▒rman─▒n, ikisini de bir dizgeye d├Ân├╝┼čt├╝rmenin ard─▒ndan e┼čle┼čirse yinelemenin bir birle┼čimidir. O zaman sadece sayabilirsiniz. Bu geli┼čtirilebilir, ancak buras─▒ benim yapt─▒─č─▒m yer. Bu yard─▒mc─▒ olur umar─▒m.


3







A┼ča─č─▒daki ┼čekilde azaltma y├Ânteminin kar─▒n─▒ alarak:

 function insert(arr, val, index) {
    return index >= arr.length 
        ? arr.concat(val)
        : arr.reduce((prev, x, i) => prev.concat(i === index ? [val, x] : x), []);
}
 

B├Âylece, bu ┼čekilde yeni bir dizi d├Ând├╝rebiliriz (serin ve i┼člevsel bir yol - itme veya ekleme kullanmaktan ├žok daha iyi), indekse yerle┼čtirilen eleman ile ve indeks dizinin uzunlu─čundan daha b├╝y├╝k ise, eklenecektir. sonunda.


2







Biraz daha eski bir konu, ancak yukar─▒da Redu ile ayn─▒ fikirdeyim ├ž├╝nk├╝ splice kesinlikle biraz kafa kar─▒┼čt─▒r─▒c─▒ bir aray├╝ze sahip. Ve cdbajorin taraf─▒ndan verilen cevap, "ikinci parametre 0 oldu─čunda sadece bo┼č bir dizi d├Ând├╝r├╝r", 0'dan b├╝y├╝kse, diziden kald─▒r─▒lan ├Â─čeleri d├Ând├╝r├╝r ", do─čru ise, noktay─▒ ispatl─▒yor. Fonksiyonun amac─▒ Jakob Keller taraf─▒ndan eklenmesi veya daha ├Ânce s├Âylendi─či gibi, "kat─▒lmak veya ba─članmak, ayn─▒ zamanda de─či┼čmek dedir. ┼×u anda de─či┼čtirmekte oldu─čunuz, elemanlar─▒n eklenmesini veya ├ž─▒kar─▒lmas─▒n─▒ i├žeren bir dizi olu┼čturdunuz." e─čer varsa, elemanlar─▒n d├Ân├╝┼č de─čeri en iyi ihtimalle gariptir. Ve% 100 bu y├Ântemin, eklenmi┼č unsurlar─▒n eklenmi┼č oldu─ču yeni bir dizi olan do─čal g├Âr├╝n├╝yorsa geri d├Ând├╝─č├╝ takdirde zincirlemeye daha uygun olabilece─čini kabul ediyorum. Ard─▒ndan ["19", "17"]. Splice (1,0, "18"). Join ("...") veya geri g├Ânderilen dizi ile ne istersen yapabilirsin. Kald─▒r─▒lm─▒┼č olan─▒n iadesi ger├že─či, sadece sa├žma bir IMHO. Y├Ântemin amac─▒ "bir dizi ├Â─čeyi kesmek" ise ve bu sadece niyetiydi. G├Âr├╝n├╝┼če g├Âre zaten neyi kesti─čimi bilmiyorsam, muhtemelen bu unsurlar─▒ kesmek i├žin ├žok az nedenim var, de─čil mi? Mevcut diziyi mutasyona sokmak yerine mevcut diziden yeni bir dizinin yap─▒ld─▒─č─▒ concat, map, k├╝├ž├╝ltme, dilimleme vb. Gibi davran─▒lsa daha iyi olurdu. Bunlar─▒n hepsi zincirlenebilir ve bu ├Ânemli bir konu. Zincir dizi manip├╝lasyonunda olduk├ža yayg─▒nd─▒r. Dilin bir veya di─čer y├Âne gitmesi ve m├╝mk├╝n oldu─ču kadar buna ba─čl─▒ kalmaya ihtiyac─▒ var gibi g├Âr├╝n├╝yor. Javascript i┼člevsel ve daha az bildirimsel olarak, sadece normdan garip bir sapma gibi g├Âr├╝n├╝yor.


1


2019-07-18





─░┼čte uygulamam─▒n birinde kulland─▒─č─▒m bir ├žal─▒┼čma i┼člevi.

Bu madde ├ž─▒k─▒┼č olup olmad─▒─č─▒n─▒ kontrol eder

 let ifExist = (item, strings = [ '' ], position = 0) => {
     // output into an array with empty string. Important just in case their is no item. 
    let output = [ '' ];
    // check to see if the item that will be positioned exist.
    if (item) {
        // output should equal to array of strings. 
        output = strings;
       // use splice in order to break the array. 
       // use positition param to state where to put the item
       // and 0 is to not replace an index. Item is the actual item we are placing at the prescribed position. 
        output.splice(position, 0, item);
    }
    //empty string is so we do not concatenate with comma or anything else. 
    return output.join("");
};
 

Ve sonra a┼ča─č─▒dan ├ža─č─▒r─▒r─▒m.

 ifExist("friends", [ ' ( ', ' )' ], 1)}  // output: ( friends )
ifExist("friends", [ ' - '], 1)}  // output:  - friends 
ifExist("friends", [ ':'], 0)}  // output:   friends: 
 

0







─░┼čte iki yol:

 const array = [ 'My', 'name', 'Hamza' ];

array.splice(2, 0, 'is');

console.log("Method 1 : ", array.join(" ")); 

VEYA

 Array.prototype.insert = function ( index, item ) {
    this.splice( index, 0, item );
};

const array = [ 'My', 'name', 'Hamza' ];
array.insert(2, 'is');

console.log("Method 2 : ", array.join(" ")); 


0



─░lgili yay─▒nlar


NSString'i bir NSNumber'a d├Ân├╝┼čt├╝rme

JavaScript'te bir dizi nesneden farkl─▒ de─čerler nas─▒l elde edilir?

Diziye nesne ekleme

Bir dizideki bir ├Â─čeyi Javascript ile nas─▒l de─či┼čtiririm?

Swift'deki bir diziden bir eleman nas─▒l kald─▒r─▒l─▒r

Bir Nesneyi {} JavaScript'te anahtar / de─čer ├žiftlerinin bir Dizisine [] d├Ân├╝┼čt├╝rmek

PHP'de bir dizinin ba┼č─▒na bir ├Â─če nas─▒l eklenir?

StdClass () [duplicate] kullanarak bir diziyi bir nesneye d├Ân├╝┼čt├╝rme

ActiveRecord sonu├žlar─▒ bir karma diziye nas─▒l d├Ân├╝┼čt├╝r├╝l├╝r

Geli┼čmi┼č deyim diziler i├žin nas─▒l ├žal─▒┼č─▒r ve bir dizi i├žin yineleyici nas─▒l elde edilir?

Etiketle ilgili di─čer sorular [javascript]


Android em├╝lat├Âr ekran─▒n─▒ nas─▒l d├Ând├╝r├╝r├╝m? [├žift]

Windows'ta Git depolar─▒ndaki dizinleri yoksayma

Java'n─▒n ├žekirdek k├╝t├╝phanelerinde GoF Design Pattern ├Ârnekleri

Bir fonksiyonun i├žinde de─či┼čtirdikten sonra de─či┼čkenim neden de─či┼čmiyor? - Asenkron kod referans─▒

Python Jenerat├Ârleri ve Yineleyiciler Aras─▒ndaki Fark

Bo┼č veya bo┼č JSTL c etiketlerini de─čerlendirin

Bash'deki ili┼čkisel diziler ├╝zerinde yineleme

Android'de i┼č par├žac─▒─č─▒ veya i┼člem duraklamas─▒ / uyku nas─▒l?

Bash'deki bayraklarla ilgili tart─▒┼čmalar nas─▒l elde edilir

MongoDB ba─člant─▒lar─▒n─▒ Node.js web uygulamas─▒nda nas─▒l y├Ânetirim?