2016-12-05 4 views
0

У меня возникли трудности с пониманием использования slice() по следующему коду, который не приносит мне ожидаемого результата.Использование slice() в JavaScript

var cDate = "11-05-2016"; 
var m = cDate.slice(0,2); 
var d = cDate.slice(3,2); 
var y = cDate.slice(6); 
console.log("Month is " + m); 
console.log("Day is " + d); 
console.log("Year is " + y); 

Это дает следующий результат:

Month is 11 
Day is 
Year is 2016 

Я пытался slice с разными строками. Но каждый раз, когда я это делаю, он всегда дает мне пустую строку, когда я нарезаю ее из середины строки. Почему это?

+5

«endSlice Необязательный индекс, на котором заканчивается извлечение. Если этот параметр опущен, slice() извлекает в конец строки. Если отрицательный, он рассматривается как sourceLength + endSlice, где sourceLength - длина string (например, если endSlice равно -3, оно рассматривается как sourceLength - 3). " –

+0

Я хочу, чтобы день был напечатан как 05. Он возвращает пустую строку – Ammu

+2

Второй параметр - это не длина среза, как в 'substr'. – epascarello

ответ

2

От MDN:

Метод slice() извлекает раздел строки и возвращает новую строку.

Синтаксис среза:

str.slice (beginSlice [, endSlice])

Обратите внимание, что endSlice является фактическое положение в строке (и не сколько символов получить от beginSlice).

В вашем примере - вы не можете нарезать строку из позиции 3 в позицию 2 (потому что она идет назад), поэтому вы получаете пустую строку.

+0

// Обратите внимание, что endSlice является фактическим положением в строке (а не тем количеством символов, которое нужно получить с начала // О, да. Я получаю это сейчас. Спасибо! – Ammu

+0

@Ammu, изменено на 'beginSlice' :) спасибо! – Dekel

2

Вы, кажется, в замешательстве slice с substr. Аргументы означают разные вещи:

  • slice(startIndex, endIndex)
  • substr(startIndex, length)

var cDate = "11-05-2016"; 
 
var m = cDate.substr(0,2); // "11" 
 
var d = cDate.substr(3,2); // "05" 
 
var y = cDate.substr(6); // "2016" 
 
console.log("Month is " + m); 
 
console.log("Day is " + d); 
 
console.log("Year is " + y);

+0

Спасибо! Это работает! – Ammu

Смежные вопросы