Получаю undefined вместо числа

124
19 октября 2019, 03:40

Есть код:

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: Если в функцию записать

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

То выводится число, сама же функция в момент вызова почему-то возвращает undefined.

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

если 2 аргумент не передаш в getEquelsCoin то будет то что по умолчанию

Answer 2

У вас было несколько ошибок. Самая главная ошибка, вы забыли return.

Посмотрите пример с комментариями.

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))

READ ALSO
Анимация polylines google maps

Анимация polylines google maps

стоит задача на гугл карте сделать анимацию полета самолетовКак сделать анимацию из одной точки во вторую я знаю:

169
Цепочка прототипов и hasOwnProperty

Цепочка прототипов и hasOwnProperty

Не могу понятьНа MDN пишут, что:

98
Jquery отказывается работать

Jquery отказывается работать

Вот есть код в чате с формой и отправкой аякс запроса по нажатию на кнопкуНО увы ничего не происходит

134