Hur man enkelt trunkerar en array med JavaScript?


Linq har en bekväm operatörmetod som heter Take() för att returnera ett givet antal element i allt som implementerar IEnumerable. Finns det något liknande i jQuery för att arbeta med arrayer?

Eller, uttryckt på ett annat sätt: hur kan jag trunkera en array i Javascript?

Svar #1

Det finns en slice-metod

let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
arr = arr.slice(0, 4);
console.log(arr);

Kommer att returnera de första fyra elementen.

Glöm inte att tilldela det tillbaka till din variabel om du vill kassera de andra värdena.

Notera: Detta är bara vanlig javascript, ingen anledning till jquery.

Svar #2

(2 år senare...) Om du verkligen vill förkorta en array kan du också använda length-attributet:

var stooges = ["Moe", "Larry", "Shemp", "Curly", "Joe"];
stooges.length = 3; // now stooges is ["Moe", "Larry", "Shemp"]

Observera: om du tilldelar en längd som är längre än den nuvarande längden, införs odefinierade arrayelement, som visas nedan.

var stooges = ["Moe", "Larry", "Shemp"];
stooges.length = 5;
alert(typeof stooges[4]); // alerts "undefined"

REDIGERA :

Som @twhitehead nämnde nedan, kan tillägg av odefinierade element undvikas genom att göra så här:

var stooges = ["Moe", "Larry", "Shemp"];
stooges.length = Math.min(stooges.length, 5); 
alert(stooges.length)// alerts "3"

Svar #3

Om du frågar hur man trunkerar (modifierar en array genom att ta bort elementen från slutet) så använd splice:

var a1 = [2,4,6,8];
var a2 = a1.splice(-2,2); // a1=[2,4], a2=[6,8]

Om du frågar hur man hämtar en delmängd av en array utan att ändra den ursprungliga, använd då slice.

var a1 = [2,4,6,8];
var a2 = a1.slice(-2); // a1=[2,4,6,8], a2=[6,8]

Kom bara ihåg att splice ändrar, slice får åtkomst. Negativa siffror som första argument indikerar index från slutet av arrayen.

Svar #4

Sätt .length-egenskapen till ett lägre värde.

Officiell dokumentation: Array.prototype.length

Relaterade artiklar