2012-11-16 10 views
6

Próbuję pobrać ostatni element tablicy po wykonaniu podziału na łańcuch znaków przy użyciu javascript.Uzyskiwanie ostatniego elementu tablicy z podziałem na Javascript

var str ="Watch-The-Crap-456".split('-')[this.length]; 
    console.log(str);​​​ 
    // want it to console log 456, now it consoles WATCH which is in array[0] 

Próbowałem robić [this.length - 1] żeby mnie ostatni element tablicy, ale daje mi niezdefiniowana, wiem, że niektórzy z was może powiedzieć utworzyć kolejną zmienną do przechowywania tablicę, ale to interesujące zobaczyć, czy możemy utrzymuje rzeczy krótszy.

+0

od powyżej przewidzianych kod, nie ma sposobu, aby dowiedzieć się, co to oznacza " –

+0

Nawet jeśli było to poprawne, wprowadzasz błąd off o jeden błąd, ponieważ indeksowanie jest oparte na 0. – Aesthete

+0

po prostu zrób to w dwóch liniach. nawet gdyby istniał jeden liniowiec, trudniej byłoby go przeczytać/zrozumieć/utrzymać. – jbabey

Odpowiedz

22

Jak o:

"Watch-The-Crap-456".split('-').pop(); // returns 456 
+0

brillant !!! bardzo dziękuję – unknown

+0

Należy pamiętać, że tworzysz zupełnie nową tablicę, aby uzyskać jeden element, chociaż wygląda to całkiem ładnie. – Aesthete

+0

+1 dla 'pop()'. –

2

this jest zdefiniowany w ramach szacunku (lub przynajmniej nie dotyczy tablicy ).

naiwny sposobem byłoby dwie linie:

var str ="Watch-The-Crap-456".split('-'); 
console.log(str[str.length - 1]);​​​ 

go zobaczyć in action.

1

Po prostu chcesz ostatni element ? Możesz to zrobić:

var str ="Watch-The-Crap-456"; 
console.log(str.slice(str.lastIndexOf('-')+1));​ 

W tym przypadku musisz najpierw zdefiniować ciąg znaków, co ma sens. Nie widzę żadnej sytuacji, w której chciałbyś pobrać ostatni element z literału, wystarczy napisać str = "456" i zakończyć.

0

Korzystanie podkreślenia, które jest wliczone w niektórych innych bibliotek/ram, takich jak backbone.js:

_.last(str.split('-')); 

Patrz: http://underscorejs.org/#last

Powiązane problemy