Aşağıdaki dizi var.
var arr = [1,0,2];
Son elemanı yani 2 kaldırmak istiyorum.
Kullandım arr.slice(-1);
ama değeri kaldırmıyor.
arr.slice(0,-1)
benim için en iyi çözümdü
splice()
İkinci vaka: pop()
.
Aşağıdaki dizi var.
var arr = [1,0,2];
Son elemanı yani 2 kaldırmak istiyorum.
Kullandım arr.slice(-1);
ama değeri kaldırmıyor.
arr.slice(0,-1)
benim için en iyi çözümdü
splice()
İkinci vaka: pop()
.
Yanıtlar:
Ek yeri kullan (dizin, howmany)
arr.splice(-1,1)
[1].splice(-1, 1)
=>[1]
[0,1,2] -> [2]
geride bırakmak [0,1]
. Bu durumda, o [arr.pop()]
zaman hile yapacağız.
array.pop()
ise Modifiye değişecek array
iken, slice(0, -1)
olmaz. Pop elbette daha hızlıdır, ancak tüm ihtiyaçlar için her zaman uygun olmayabilir.
JavaScript kurallarına göre Array.prototype.pop () .
let fruit = ['apple', 'orange', 'banana', 'tomato'];
let popped = fruit.pop();
console.log(popped); // "tomato"
console.log(fruit); // ["apple", "orange", "banana"]
Bunu aşağıdaki .slice()
gibi bir yöntemle yapabilirsiniz :
arr.slice(0, -1); // returns [1,0]
İşte bir demo:
var arr = [1, 0, 2];
var newArr = arr.slice(0, -1); // returns [1,0]
console.log(newArr);
$('#div1').text('[' + arr + ']');
$('#div2').text('[' + newArr + ']');
<script src="http://code.jquery.com/jquery.min.js"></script>
<b>Original Array : </b>
<div id="div1"></div>
<br/>
<b>After slice(0, -1): </b>
<div id="div2"></div>
yerine:
arr.slice(-1); // returns [2]
İşte bir demo:
var arr = [1, 0, 2];
var newArr = arr.slice(-1); // returns [2]
console.log(newArr);
$('#div1').text('[' + arr + ']');
$('#div2').text('[' + newArr + ']');
<script src="http://code.jquery.com/jquery.min.js"></script>
<b>Original Array : </b>
<div id="div1"></div>
<br/>
<b>After slice(-1): </b>
<div id="div2"></div>
Şimdi Array.prototype.slice()
ya da kısaca slice()
yöntemin temel sözdizimi :
arr.slice([begin[, end]])
Buraya,
begin
parametresi bir dizi başlatma gelen olan ekstraksiyon sıfır tabanlı endeksidir. Yani, yukarıdaki örneğe dayanarak,
arr.slice(0) // returns [1,0,2]
tüm dizi öğelerini sıranın başlangıcından 0 konumundan başlayarak döndürür [1,0,2]
. Benzer şekilde, yaparsak
arr.slice(1) // returns [0,2]
[0,2]
0 burada 1. konumda olduğundan ve bundan sonraki her şeyden dönecektir . Şimdi, sizin durumunuzda negatif bir indeks geçtiniz, yani, -1
start parametresi olarak, dizinin sonundan itibaren bir ofseti gösterir. Yani, slice(-1)
sizin durumunuzda dizideki son bir dizi öğesini çıkarır ve bu 2
( yukarıdaki demoda daha önce gördüğümüz gibi) ).
Şimdi, burada yöntem sözdizimindeki end
parametre hakkında konuşalım slice()
. Yine, bir diziden çıkarmanın sona erdiği sıfır tabanlı bir dizindir. Diyelim ki şöyle bir dizimiz var: -
var arr = [1, 0, 2, 5, 3, 9];
ve 2,5,3
dizideki elemanları almak istiyoruz . Şimdi, 2
dizinin başlangıcından itibaren konumu 2
ve son eleman 3
için öyle 4
. Öğeyi bu konumdan önce almamız gerektiğinden ekstraksiyonu burada bir konum 5'e sonlandırmamız gerekecek. Yani, slice()
burada sadece
arr.slice(2, 5) // returns [2,5,3]
Sizin durumunuzda, -1
end parametresi olarak uyguladık , bu nedenle kodumuz şöyle
arr.slice(0, -1) // returns [1,0]
Negatif bir dizin olarak, end
dizinin sonundan itibaren bir ofseti belirtir. Böylece, slice(0,-1)
ilk öğeyi dizideki ikinci-son öğeden ayıklar. Böylece, istenen çıktıyı elde ederiz. Biz de yapabiliriz
arr.slice(0, 2) // returns [1,0]
Aynı çıktıyı alacağız. Ancak, -1
burada uzun bir dizi için bile uygulanması daha kolay olarak kullandım
[0,2,3,1,2,9,3,6,3,9,1,0,2,9,0,1,1,2,3,4,7,9,1]
Sadece son elemanı kaldırmak istiyorsanız, burada ve sonuncunun son 9 pozisyonunu hesaplamak istemezsiniz arr.slice(0, 22)
. Daha sonra, negatif dizin mantığını buraya uygulayabilir ve
arr.slice(0, -1) // same result as arr.slice(0, 22)
Umarım yardımcı olur!
arr
bunun yerine son öğeyi hariç tutan yeni bir dizi döndürdüğü unutulmamalıdır. Mozilla'nın belgelerinde dediği gibi: "slice () yöntemi, bir dizinin bir kısmının sığ bir kopyasını yeni bir dizi nesnesine döndürür."
arr.slice(0, -1)
iyi cevaptır.
örnekle öğren:
let array_1 = [1,2,3,4];
let array_2 = [1,2,3,4];
let array_3 = [1,2,3,4];
array_1.splice(-1,1) // output --> [4] array_1 = [1,2,3]
array_2.slice(0,-1); // output --> [1,2,3] array_2 = [1,2,3,4]
array_3.pop(); // output --> 4 array_3 = [1,2,3]
slice
Orijinal diziyi değiştirmediği için bunu yapmanız gerekir .
arr = arr.slice(-1);
Orijinal diziyi değiştirmek isterseniz şunları kullanabilirsiniz splice
:
arr.splice(-1, 1);
veya pop
:
arr.pop();
.pop()
En 'doğru' çözüm olarak düşünürdüm , ancak bazen son öğe olmadan dizi kullanmanız gerektiğinden işe yaramayabilir ...
Böyle bir durumda aşağıdakileri kullanmak isteyebilirsiniz, [1,2,3]
var arr = [1,2,3,4];
console.log(arr.splice(0,arr.length-1));
süre .pop()
dönecekti 4
:
var arr = [1,2,3,4];
console.log(arr.pop());
bu istenmeyebilir ...
Umarım bu size biraz zaman kazandırır.
Kullanım durumunuz için aşağıdakileri kullanmanız yeterlidir:
var arr = [1,2,3,4];
arr.pop() //returns 4 as the value
arr // value 4 is removed from the **arr** array variable
Sadece bir not. pop()
Satır açılan öğeyi döndürse bile işlevi yürüttüğünüzde orijinal dizi etkilenir ve açılan öğe kaldırılır.
Bunu kullanarak iki şekilde yapabilirsiniz splice()
:
arr.splice(-1,1)
arr.splice(arr.length-1,1)
splice(position_to_start_deleting, how_many_data_to_delete)
iki parametre alır.
position_to_start_deleting
: Silmeye başlanacağı yerden sıfır temelli dizin.
how_many_data_to_delete
: Belirtilen dizinden, ardışık kaç verinin silinmesi gerektiği.
Ayrıca kullanarak son öğe kaldırabilirsiniz pop()
olarak pop()
bazı diziden uzaklaşmaların son öğe.
kullanımarr.pop()
arr.slice(-1)
dizinin son öğesinin bir kopyasını döndürür , ancak orijinal diziyi değiştirmeden bırakır.
n
Bir dizideki son öğeleri kaldırmak için şunu kullanın:arr.splice(-n)
("ek" içindeki "p" yi not edin). Dönüş değeri, kaldırılan öğeleri içeren yeni bir dizi olacaktır.
n == 1
Kullanım için henüz daha basitval = arr.pop()
Bu yöntem, bir dizinin son öğesini silmek ve depolamak için daha yararlıdır.
var sampleArray = [1,2,3,4];// Declaring the array
var lastElement = sampleArray.pop();//this command will remove the last element of `sampleArray` and stores in a variable called `lastElement` so that you can use it if required.
Şimdi sonuçlar:
console.log(sampleArray); //This will give you [1,2,3]
console.log(lastElement); //this will give you 4
Belirterek It yetmeyecek slice
hem dönecektir yeni dizi, oysa .pop()
ve .splice()
dönüşecek mevcut diziyi.
Zincirleme komut stiline sahip veri koleksiyonlarını işlemeyi seviyorsanız, slice
seviyorsanız, bunun gibi bir şeye bağlı kalmak .
Örneğin:
myArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var newArrayOfThings = myArray
.filter(x => x > 5) // only bigly things
.slice(-1) // get rid of the last item
.map(x => `The number is: ${x}`);// map to a set of strings
Bunun aksine map
, "pop" ile aynı şeyi yapmak için çok daha fazla karışıklık ve değişken yönetim gerektirebilir.filter
vb, yeni bir dizi geri alamadım.
push
Bir dizinin sonuna bir öğe ekleyen aynı şey . concat
Akışı devam ettirmenize izin verdiği için daha iyi olabilirsiniz .
myArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var newArrayOfThings = myArray
.filter(x => x > 5) // only bigly things
.slice(-1) // get rid of the "10"
.concat([100]) // note with concat, you must pass an array
.map(x => `The number is: ${x}`) // map to a set of strings
Lodash ile hangi öğelerin kaldırıldığını bilmezseniz dropRight'ı kullanabilirsiniz :
_.dropRight([1, 2, 3])
// => [1, 2]
_.dropRight([1, 2, 3], 2);
// => [1]
2019 ECMA5 Çözümü:
const new_arr = arr.reduce((d, i, idx, l) => idx < l.length - 1 ? [...d, i] : d, [])
Tahribatsız, genel, tek astarlı ve sadece dizinizin sonunda bir kopyala yapıştır gerektirir.
I would like to remove the last element
. Bu, orijinal dizide yıkıcı / mutasyona uğrayan bir işlem gerektirir.
söyle var var arr = [1,0,2]
arr.splice(-1,1)
sana array [1,0];
dönecekken arr.slice(-1,1)
sana dönecekarray [2];
Bu, son öğeyi kaldırmak için iyi bir yoldur:
if (arr != null && arr != undefined && arr.length > 0) {
arr.splice(arr.length - 1, 1);
}
Splice detay aşağıdaki gibi:
splice (startIndex, splice sayısı)
var stack = [1,2,3,4,5,6];
stack.reverse().shift();
stack.push(0);
Çıktı: Dizi [0,1,2,3,4,5] olacaktır . Bu, yeni bir değeri içeri aktarırken aynı sayıda dizi öğesini korumanıza izin verir.