Получить индекс массива из дат

312
08 сентября 2017, 23:38

Всем привет. Задача такая, дан массив, состоящий из одних дат. Хочу получить индекс через значение, но какой элемент я бы не выбрал, всегда получаю -1.

var k = [ 
  new Date('2017-07-17'), 
  new Date('2017-07-20'), 
  new Date('2017-07-23'), 
  new Date('2017-07-26'), 
  new Date('2017-07-28'), 
  new Date('2017-07-30') 
] 
 
console.log(k.indexOf(new Date('2017-07-28')));

Answer 1

Обычный indexOf не сработает, так как у нас даты в виде обьектов, но можно использовать метод findIndex (подробней о нем) например с приведением даты к числу.

То-есть мы передаем в findIndex метод сравнения, который приводит 2ве даты в числа и сравнивает их :

var k = [ 
  new Date('2017-07-17'), 
  new Date('2017-07-20'), 
  new Date('2017-07-23'), 
  new Date('2017-07-26'), 
  new Date('2017-07-28'), 
  new Date('2017-07-30') 
]; 
 
var testDate = new Date('2017-07-28'); 
var index = k.findIndex(i => +i == +testDate); 
 
console.log(index);

ПС: прям в документации (ссылка выше) есть полифилл на данный метод, если нужна поддержка более старых браузеров.

READ ALSO
Калькулятор с помощью checkbox

Калькулятор с помощью checkbox

Здравствуйте,есть задача реализовать следующий калькулятор на чекбоксах

569
Как узнать длину ключа объекта в js

Как узнать длину ключа объекта в js

На изображении есть объект который я принимаю от сервера, а должен отобразить количество всех, в моем случае компаний, в Html документе, то есть...

384
2 одинаковых checkbox

2 одинаковых checkbox

Есть 2 чекбокса с одинаковыми параметрами, как с помощьjquery выполнить проверку : если первый чекбокс активен то выводим оределенный блок Div ??

281
Зачем в чужом коде тело конструктора вынесено в отдельный метод?

Зачем в чужом коде тело конструктора вынесено в отдельный метод?

Не могу понять, зачем необходимо такое разделение? Зачем в теле конструктора вызывать другой метод в контексте того же объекта, если весь...

282