Перекладывание бумажек


#21

Всем привет!
Вот, что получилось:

var getDocumentsNumbers = function (docNames, year) {
  var docNumbers = 0;
  
  for (var i = 0; i < docNames.length; i++) {
    var names = docNames[i]
    if (names.indexOf(year, 4) + 1) {
      docNumbers++; 
      
    }  
  } 
  return docNumbers
};

#22

для памяти:
алярма, неочевидное использование языка.
if (~str.indexOf(substr, order)) {…} можно перефразировать как “если найдена подстрока такая-то”, то…
использование тильды (побитовый оператор “НЕ”) элегантно, т.к. её можно описать как -(N + 1) , где N - наше исходное выражение ( ~N === -(N + 1) ). При значениях “не найдено”, т.е. когда indexOf выдаст -1, мы получим -0, который распознается в if как false и соответственно не даст выполниться телу условия. таким образом в счетчик попадают лишь соответствующие поиску подстроки.

Собственно решение
function getDocumentsNumbers(array, year) {
  let quantity = 0;
  for (let i = 0; i < array.length; i++) {
    if (~array[i].indexOf(year, 4)) { quantity++; }
  }
  return quantity;
}