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

Через форыч, например

const getDocumentsNumbers = (arr, year) => {
  let docs = [];
  arr.forEach((doc) => {
    if (doc.endsWith(`${year}`)) {
      docs.push(doc);  
    }
  });
  
  return docs.length;
};

Вроде работает без ошибок.

Сводка

var getDocumentsNumbers = (nameDoc,years) => {
var result = 0;
for(var i = 0; i < nameDoc.length; i++){
if (nameDoc[i].endsWith(years) === true){
result += 1;
}
}
return result;
}

1 лайк

Без Гугла и indexOf:

Сводка

var getDocumentsNumbers = function(array, year) {
var sum = 0;
for(var i = 0; i < array.length; i++) {
var n = array[i];
if(year == n[4] + n[5] + n[6] + n[7]) {
sum++;
}
}
return sum;
}

Ого, почти 2 месяца колупаю JS и первый раз слышу вообще об RegExp, погуглил, интересненько, осталось разобраться насколько актуально им пользоваться.

Мой вариант через match :)

let getDocumentsNumbers = (basa, filtrs) => basa.filter(a=>a.slice(-4).match(filtrs)).length

1 лайк

Придумала такое решение -.-
var getDocumentsNumbers=function(docName, year){
var q=0;
for(var i=0; i<docName.length; i++){
if((parseInt(docName[i], 10))%10000===parseInt(year, 10)){
q++;
}
}
return q;
}

c indexOf 
var getDocumentsNumbers = function (doc,age) {
var sum = 0;
  for (var i = 0; i <= doc.length - 1; i++) {
      var newAge = doc[i].indexOf(age, 4);
      if (newAge > -1) {
        sum++;
      }
  }
return sum;
}

Без indexOf 

var getDocumentsNumbers = function (doc,age) {
  var sumNumb = 0;
  for (var i = 0; i <= doc.length - 1;i++) {
    var newAge = [];
    newAge.push((doc[i])[4] + (doc[i])[5] + (doc[i])[6] + (doc[i])[7]);
    if (newAge == age) {
    sumNumb++;
    }
  }
  return sumNumb;
  }
Мой вариант

var getDocumentsNumbers = function (documents, year) {
var documentsCount = 0;
for (let document of documents) {
if (document.indexOf(year, 4) >= 0)
documentsCount++
}
return documentsCount;
}

Что значит строго не равно -1???

Просто и понятно

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

хоть убей не могу понять: вот находим мы, что индекс с которого начинается год это “4” а как программа понимает что это например 2018 а не 2017?

1 лайк

var getDocumentsNumbers = function(name,age){
var c =0;
for (var i = 0; i<name.length;i++){
var log = name[i];
log = log[4]+log[5]+log[6]+log[7]
console.log(log);
if(log == age){
c++;
}
}
return c;
}

lastIndexOf тоже относится к IndexOf только поиск идет с конца строки. Вот наипростейшее и понятное решение.

var getDocumentsNumbers = function (docs, year) {
var count = 0;
for (var i = 0; i < docs.length; i++) {
if(docs[i].lastIndexOf(year) == 4){
count++;
}
}
return count;
}

1 лайк
Code
function getDocumentsNumbers(documents, year) {
  const re = new RegExp(`\\d{4}${year}`, 'g');  
  const found = documents.join().match(re);  
  
  if (found) {
    return found.length;
  } else {
    return 0;
  }
}
1 лайк

Мое решение:
let getDocumentsNumbers = function(date, year) {
var quantity = 0;
for(let i = 0; i < date.length; i++) {
if (Number(date[i]) % 10000 === year) {
quantity ++;
}
}
return quantity;
}

1 лайк

моё решение:

let getDocumentsNumbers = function(arr, date) {
let newArr = arr.filter((item) => item.slice(4).includes(date));
let count = newArr.length;
return count;
}

Мой вариант на основе материалов тренажера:

let getDocumentsNumbers = function (docNames, year) {
let checkYear;
let total = 0;
for (let i = 0; i < docNames.length; i++) {
checkYear = docNames[i].indexOf(year, 4);
if (checkYear == 4) {total++;}
}
return total;
}

const getDocumentsNumbers = (attachments, year) => {
  attachments = attachments.filter(a => a.includes(year, 4))
  return attachments.length
}

Мой вариант исключительно из знаний взятых на курсе:

let getDocumentsNumbers = function (doc, date) {
let temp = [];
for (let i = 0; i < doc.length; i++) {
if (doc[i].indexOf(date, 4) > -1) {temp.push(doc[i].indexOf(date));}
}
return temp.length;
}

лучше не создавать дополнительный массив, так как это лишние затраты по памяти, проще просто сделать переменную счётчик и увеличивать её на 1 при выполнение условия, мелочь но из-за большого количества таких штук программа будет работать медленнее! :robot: