вставка в строку не функция - PullRequest
0 голосов
/ 12 октября 2019

У меня есть простая проблема, которая запутывает меня до чертиков. Я пытался найти другие подобные проблемы, но не смог найти именно эту проблему. Я пытаюсь вставить строку в пустую строку и получаю сообщение об ошибке, в котором говорится, что push - это не функция?

/Users/3x7r3m157/Development/Javascript/leaderboard.js:37
  competitor.push(data[i])
             ^

TypeError: competitor.push is not a function Super confused. 

Есть идеи? Вот мой код (я знаю, что есть другие ошибки, но в настоящее время работает через эту странную ошибку push):


const args = require('yargs').argv;
const fs = require('fs');
const util = require('util');
const leaderboard = require('./db.json')

const addCompetitor = (name) => {
  leaderboard[name] = { points: [], times: [] }
  console.log(leaderboard)
  return leaderboard
}

console.log(leaderboard)

const addCompetitorTimes = (data) => {
  let parser = 0;
  var competitor = '';
  let times = '';
  let seconds = '';
  let minutes = '';
  let timeInSeconds = 0;

  for (let i = 0 ; i < data.length ; i ++) {
    if (parser == 0) {
      //Stack Overflow peeps, weird error right here:
      competitor.push(data[i])
    }
    if (parser == 0 && i == '_') {
      parser ++
    }
    if (parser == 1) {
      times.push(data[i])
    }
  }

  parser = 0

  for (let i = 0 ; i < times.length ; i ++) {
    if (parser == 0) {
      minutes.push(times[i])
    }
    if (parser == 0 && i == ':') {
      parser ++
    }
    if (parser == 1) {
      seconds.push(times[i])
    }
  }
  seconds = parseInt(seconds);
  minutes = parseInt(minutes);

  timesInSeconds = seconds + (minutes * 60)

  // leaderboard[name].times.push(timeInSeconds)

  return timesInSeconds
}

addCompetitorTimes(args.competitorTimes)

fs.readFile('./db.json', (err, leaderboard) => {
    if (err) throw err;
    var db = JSON.parse(leaderboard);
    // console.log(db)
});


1 Ответ

1 голос
/ 12 октября 2019
var competitor = '';

competitor является строкой, а не массивом

Инициализируйте ее так, чтобы сделать массив:

const competitor = [];
...