Рассчитать цену на основе таблицы цен

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

Рассчитать цену на основе таблицы цен.

как на картинке проверка по одному так:

if (type = "type1" && size = "22" && method = "method1" && width= = "150mm"){
totalPrice = 120;
}

трудно.

есть ли другой способ сделать такие вычисления, как поместить данные в массив JSON и выполнить итерацию по нему, чтобы получить цену.

это пример codepen

= — задание. == или === это сравнение
Rajesh 19.12.2022 04:51
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
81
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Создайте объект базы данных и сохраните все данные в таком формате, чтобы их можно было получить на основе входного свойства.

используйте эту аналогию:

const database = {
 "type1": {
    "20ft": {
        "method1": {
            "150mm": "125$",
            "200mm": "132$",
            "250mm": "142$"
        },
        "method2": {
            ...
        },
        "method3": {
            ...
        }
    },
    "21ft": {
     ...
    }
 },
 "type2": {
    ...
 }
}

// When you want to fetch the answer use call the variable like this
const answer = database?.["type1"]?.["20ft"]?.["method1"]?.["150mm"] || null;

Спасибо за ответ .. я тоже пытался сделать что-то подобное раньше. но не смог написать функцию вызова с несколькими переменными. это отлично сделает эту работу. еще раз спасибо

s.Jay 19.12.2022 07:11

Этот метод возможен с использованием фильтра массива и карты

сохранить как get-price.js

const data = [
{
    "type": "type1",
    "size": "20ft",
    "length": "150mm",
    "method": "method1",
    "price": "125$"
},
{
    "type": "type1",
    "size": "20ft",
    "length": "150mm",
    "method": "method2",
    "price": "152$"
},
{
    "type": "type1",
    "size": "20ft",
    "length": "150mm",
    "method": "method3",
    "price": "170$"
},
{
    "type": "type1",
    "size": "20ft",
    "length": "200mm",
    "method": "method1",
    "price": "132$"
},
{
    "type": "type1",
    "size": "20ft",
    "length": "200mm",
    "method": "method2",
    "price": "152$"
},
{
    "type": "type1",
    "size": "20ft",
    "length": "200mm",
    "method": "method3",
    "price": "212$"
},
{
    "type": "type1",
    "size": "20ft",
    "length": "250mm",
    "method": "method1",
    "price": "142$"
},
{
    "type": "type1",
    "size": "20ft",
    "length": "250mm",
    "method": "method2",
    "price": "182$"
},
{
    "type": "type1",
    "size": "20ft",
    "length": "250mm",
    "method": "method3",
    "price": "112$"
}
]

const getPrice = (type, size, length, method) => {
return (data
    // filter matched condition
    .filter(el => {
        return el.type == type &&
        el.size == size &&
        el.length == length &&
        el.method == method
    })
    // map return price and first item of array
    .map (el => {
        return el.price
    })[0])
}

console.info(getPrice('type1', '20ft', '150mm', 'method3'))
console.info(getPrice('type1', '20ft', '150mm', 'method1'))
console.info(getPrice('type1', '20ft', '250mm', 'method2'))

Результат

$node get-price.js

170$
125$
182$

Спасибо за ответ .. этот метод также отлично справляется со своей задачей. но массив данных будет иметь 360 объектов. использование фильтра и карты также дает мне другой способ. еще раз спасибо

s.Jay 19.12.2022 07:17

Нет проблем, я также узнаю ваш вариант использования таблицы.

Bench Vue 19.12.2022 12:23

Другие вопросы по теме