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
