2016-04-01 11 views
1

Ich suche nach einer Möglichkeit, mein Array ohne das letzte Element und ohne mutiert zu erhalten.Lodash: Array ohne letztes Element, keine Mutation

  • _.remove tut mutieren das Array und sucht nach Wert nicht Index
  • _.without Suche nach Wert, nicht Index

(auch wenn es asked there war) Ich habe _.filter(array, function(el, i) { return i != array.length -1}); aber siouf, nicht wirklich explizit und Es muss ein Array irgendwo gespeichert werden. diese

Dank

+1

wird nicht Array-Slice tun können? arr.slice ([Anfang [, Ende]]). Dadurch wird eine flache Kopie erstellt und Sie können -1 als Ende verwenden. – 82Tuskers

Antwort

3

Ich war für so etwas wie "butlast" suchen, aber ich fand initial, die die Arbeit erledigt:

var xs = [1, 2, 3, 4]; 

var xs2 = _.initial(xs); 

console.log(xs, xs2); // [1, 2, 3, 4] [1, 2, 3] 
1

Versuchen:

_.take(arr, arr.length-1) 
+0

Guter Fang. Obwohl '_.initial' meinem Bedarf noch besser entspricht. –

2

Array.prototype.slice könnte Ihnen helfen .

var array = [1,2,3,4,5]; 
var newArr = array.slice(0, -1); 

console.log(array); // [1, 2, 3, 4, 5] 
console.log(newArr); // [1, 2, 3, 4] 

Natürlich sind Sie es auch mit lodash

für Sie

Dank