Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.01.2017, 16:17
Аватар для RoyalHunt
Интересующийся
Отправить личное сообщение для RoyalHunt Посмотреть профиль Найти все сообщения от RoyalHunt
 
Регистрация: 17.01.2017
Сообщений: 16

Получить числа из строк значений свойств в объекте.
Здравствуйте, Друзья!

Нужна помощь... В голову не придет никак, ка можно это решить.

Есть следующая задача:

function fixAmount(amount) {
  
  return parseFloat(amount);
}


const orders = [
  { price: 21, amount: 4 },
  { price: 50, amount: '17 штук' },
  { price: 7, amount: '1,5 килограмма' },
  { price: 2, amount: ' 2.7 метра ' },
  { price: 1, amount: 'семь единиц' }
];


for (let order of orders) {
  let result = fixAmount(order.amount);
  console.log(`Заказ на сумму: ${result * order.price} Q`);
}


При этом нужно получить следующее значения:
Заказ на сумму: 84 Q
Заказ на сумму: 850 Q
Заказ на сумму: 10.5 Q
Заказ на сумму: 5.4 Q
Заказ на сумму: -1 Q

Изменять при этом можно только функцию fixAmount.
Помогите, пожалуйста.

Последний раз редактировалось RoyalHunt, 24.01.2017 в 16:20.
Ответить с цитированием
  #2 (permalink)  
Старый 24.01.2017, 16:28
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Если это тестовое задание -- написать ф-цию fixAmount, которая будет обладать соответствующим поведением.

Если это код с проекта, то у вас, ребята, проблемы со структурами данных)
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #3 (permalink)  
Старый 24.01.2017, 16:34
Аватар для RoyalHunt
Интересующийся
Отправить личное сообщение для RoyalHunt Посмотреть профиль Найти все сообщения от RoyalHunt
 
Регистрация: 17.01.2017
Сообщений: 16

Это не проект. Это часть задания по курсам. Спрашивать препода - это жизнь ждать. Тут ребята поактивнее будут. Мне б понять как это можно реализовать, чтоб голова разобрала и дальнейшие задания начала делать... Спасибо за понимание!

return parseFloat(amount); я сам дописал. Только parseFloat игнорирует , и не выводит значение -1. Тут по идее следует indexOf применить. Но как ума не приложу
Ответить с цитированием
  #4 (permalink)  
Старый 24.01.2017, 16:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

RoyalHunt,
function fixAmount(amount) {
  if(typeof amount == "string")  amount = amount.replace(',','.');
  return  parseFloat(amount)||-1;
}

Последний раз редактировалось рони, 24.01.2017 в 16:48.
Ответить с цитированием
  #5 (permalink)  
Старый 24.01.2017, 17:06
Аватар для RoyalHunt
Интересующийся
Отправить личное сообщение для RoyalHunt Посмотреть профиль Найти все сообщения от RoyalHunt
 
Регистрация: 17.01.2017
Сообщений: 16

Сообщение от Rise Посмотреть сообщение
Откуда -1 что за математика? 1 * 7 = 7
Точнее было бы написать так: Только parseFloat игнорирует "," и не выводит значение -1
Ответить с цитированием
  #6 (permalink)  
Старый 24.01.2017, 17:19
Аватар для RoyalHunt
Интересующийся
Отправить личное сообщение для RoyalHunt Посмотреть профиль Найти все сообщения от RoyalHunt
 
Регистрация: 17.01.2017
Сообщений: 16

Сообщение от Rise Посмотреть сообщение
RoyalHunt, причем здесь запятая из третьей цены если речь о пятой цене?
Вы правы... еще точнее было бы написать. parseFloat не будет корректно считать { price: 7, amount: '1,5 килограмма' }, так как в значении "запятая" и не будет выводить в качестве ответа -1 для { price: 1, amount: 'семь единиц' }
Ответить с цитированием
  #7 (permalink)  
Старый 24.01.2017, 17:24
Аватар для RoyalHunt
Интересующийся
Отправить личное сообщение для RoyalHunt Посмотреть профиль Найти все сообщения от RoyalHunt
 
Регистрация: 17.01.2017
Сообщений: 16

Сообщение от рони Посмотреть сообщение
RoyalHunt,
function fixAmount(amount) {
  if(typeof amount == "string")  amount = amount.replace(',','.');
  return  parseFloat(amount)||-1;
}
Спасибо большое!
Ответить с цитированием
  #8 (permalink)  
Старый 24.01.2017, 17:30
Аватар для RoyalHunt
Интересующийся
Отправить личное сообщение для RoyalHunt Посмотреть профиль Найти все сообщения от RoyalHunt
 
Регистрация: 17.01.2017
Сообщений: 16

Сообщение от Rise Посмотреть сообщение
Эти значения ты сам сочинил или в задании они так и указаны?
В задании так указано
Ответить с цитированием
  #9 (permalink)  
Старый 24.01.2017, 23:15
Аватар для RoyalHunt
Интересующийся
Отправить личное сообщение для RoyalHunt Посмотреть профиль Найти все сообщения от RoyalHunt
 
Регистрация: 17.01.2017
Сообщений: 16

Сообщение от рони Посмотреть сообщение
RoyalHunt,
function fixAmount(amount) {
  if(typeof amount == "string")  amount = amount.replace(',','.');
  return  parseFloat(amount)||-1;
}

Можно уточнить почему не работает такой вариант, который вроде как является идентичным:


function fixAmount(amount) {
  if(amount === '')  amount = amount.replace(',','.');
  return  parseFloat(amount)||-1;
}
Ответить с цитированием
  #10 (permalink)  
Старый 25.01.2017, 01:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

RoyalHunt,
1 вариант -- если данные строка переписать зяпятую на точку.
2 вариант (ваш) - если данные отсутствуют, у несуществующих данных переписать зяпятую на точку.
чем они одинаковы?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получение вычисленного значения css свойства FanAizu jQuery 2 12.03.2014 20:30
выпадающий список подходящих строк при наборе значения yaro Элементы интерфейса 1 02.04.2012 17:54
Получить значения из формы VistaSV30 Общие вопросы Javascript 1 20.01.2011 20:12
Как получить значения стиля Glook jQuery 2 18.12.2010 13:18
Получить значения доп. полей select-option arcanerain Общие вопросы Javascript 11 29.09.2010 03:02