There is a code:

var coinsProfit = { "etf_china": { "plus": 100, "minus": -50 }, "red_etf_china": { "plus": 100, "minus": -50 }, "etf_america": { "plus": 100, "minus": -40 }, "red_etf_america": { "plus": 100, "minus": -40 }, "bitcoin": { "plus": 2000, "minus": -30 }, "red_bitcoin": { "plus": 2000, "minus": -30 }, "dollar": { "plus": 60, "minus": -200 }, "red_dollar": { "plus": 60, "minus": -200 }, "eu": { "plus": 80, "minus": -40 }, "red_eu": { "plus": 80, "minus": -40 }, "gbr": { "plus": 555, "minus": -20 }, "red_gbr": { "plus": 555, "minus": -20 }, "rub": { "plus": 666, "minus": -50 }, "red_rub": { "plus": 666, "minus": -50 }, "yen": { "plus": 222, "minus": -30 }, "red_yen": { "plus": 222, "minus": -30 }, "etf_gold": { "plus": 777, "minus": -35 }, "red_etf_gold": { "plus": 777, "minus": -35 }, "etf_IT": { "plus": 888, "minus": -11 }, "red_etf_IT": { "plus": 888, "minus": -11 }, "etf_usa": { "plus": 73, "minus": -88 }, "red_etf_usa": { "plus": 73, "minus": -88 }, "etf_japan": { "plus": 200, "minus": -98 }, "red_etf_japan": { "plus": 200, "minus": -98 } }; var coinsDataList = Object.keys(this.coinsProfit); function plus(coinRandom) { getEquelsCoin(coinRandom); }; function minus(coinRandom) { getEquelsCoin(coinRandom, 'minus'); }; function getEquelsCoin(coinRandom, sign = 'plus') { for (var key in coinsProfit) { if (key == coinRandom) { coinsProfit[key].plus; if (sign == 'plus') { return coinsProfit[key].plus; } else { return coinsProfit[key].minus; } } } }; let count = 0; coinRandom = coinsDataList[Math.floor(Math.random() * coinsDataList.length)]; count += plus(coinRandom); 

UPD: If in function to write

 console.log(coinsProfit[coinRandom].plus); return coinsProfit[coinRandom].plus; 

That number is displayed, the function itself at the time of the call for some reason returns undefined.

  • Where is the plus function defined? - ishidex2
  • Where is your coinsDataList variable and the plus function? - Stepan Kasyanenko
  • Sorry, added: forgot to copy. - Timur Musharapov
  • Now tell us what the error is? Add the error text to the question. And you did not answer what coinsDataList variable? - Stepan Kasyanenko
  • Updated the question. - Timur Musharapov

2 answers 2

  function getEquelsCoin (coinRandom, sign = 'plus') { return coinsProfit[coinRandom] ? coinsProfit[coinRandom][sign] : undefined; }; 

if the 2 argument is not passed in getEquelsCoin then it will be something that by default

  • Apparently, the error in the absence of return was. sign, by the way, will not work that way. - Timur Musharapov
  • Correct, and I will mark as correct. - Timur Musharapov
  • A typo went out need coinsProfit [coinRandom] [sign] - Sasuke
  • Why does the minus function not return anything? - Stepan Kasyanenko
  • Well, it will not be with such an implementation so that the force of minus and minus will be 1 function getEquelsCoin so that minus is not needed - Sasuke

You had a few mistakes. The biggest mistake you forgot is return .

See an example with comments.

 var coinsProfit = { "etf_china": { "plus": 100, "minus": -50 }, "red_etf_china": { "plus": 100, "minus": -50 }, "etf_america": { "plus": 100, "minus": -40 }, "red_etf_america": { "plus": 100, "minus": -40 }, "bitcoin": { "plus": 2000, "minus": -30 }, "red_bitcoin": { "plus": 2000, "minus": -30 }, "dollar": { "plus": 60, "minus": -200 }, "red_dollar": { "plus": 60, "minus": -200 }, "eu": { "plus": 80, "minus": -40 }, "red_eu": { "plus": 80, "minus": -40 }, "gbr": { "plus": 555, "minus": -20 }, "red_gbr": { "plus": 555, "minus": -20 }, "rub": { "plus": 666, "minus": -50 }, "red_rub": { "plus": 666, "minus": -50 }, "yen": { "plus": 222, "minus": -30 }, "red_yen": { "plus": 222, "minus": -30 }, "etf_gold": { "plus": 777, "minus": -35 }, "red_etf_gold": { "plus": 777, "minus": -35 }, "etf_IT": { "plus": 888, "minus": -11 }, "red_etf_IT": { "plus": 888, "minus": -11 }, "etf_usa": { "plus": 73, "minus": -88 }, "red_etf_usa": { "plus": 73, "minus": -88 }, "etf_japan": { "plus": 200, "minus": -98 }, "red_etf_japan": { "plus": 200, "minus": -98 } }; var coinsDataList = Object.keys(this.coinsProfit); function plus(coinRandom) { return getEquelsCoin(coinRandom); // Не было слова return }; function minus(coinRandom) { return getEquelsCoin(coinRandom, 'minus'); // Не было слова return }; function getEquelsCoin(coinRandom, sign = 'plus') { if (coinsProfit[coinRandom]) return coinsProfit[coinRandom][sign]; else throw new Error(`${coinRandom} not found`); }; let count = 0; coinRandom = coinsDataList[Math.floor(Math.random() * coinsDataList.length)]; console.log(plus(coinRandom))