@mrsexy
Senior Pomidor

Как получить значение из массива?

Добрый вечер!
Второй день бьюсь над функцией в скрипте, которая изначально была написана под 1 товар с вариациями.
Есть значение в массиве "kofSize", в котором указана цена расчёта товара. Мне нужно по клику на элемент, по его id получить значение price и записать его в kofSize. Получилось только для первого элемента в списке получить значение, все остальные элементы дальше рассчитываются по значению которое записано по-умолчанию в kofSize.
Надеюсь на всестороннюю помощь, уже не знаю в какую сторону и копать.

function App() {
    this.id = 0;
    this.result = [];
    this.itog = {};
    this.data = {
        defaultPrice: 0, // начальная стоимость
        select: 0,
        info: {
            first: { text: 'Пленка ПВХ прозрачная 500 МКМ КИТАЙ.', id: 'p1-1' },
            color: { text: 'Коричневый', id: 'Коричневый' },
            'n-top': { text: '"Намертво"', id: null },
            'n-bottom': { text: '"Карман под утяжелитель"', id: 'karman' },
            'n-left': { text: '"Скоба+люверс с рем."', id: 'luvers_skoba_rem_2' },
            'n-right': { text: '"Скоба+люверс с рем."', id: 'luvers_skoba_rem_3' }
        },
        rem: false,
        left: false,
        right: false,
        mount: false
    };
    this.lists = {
        kofSize: 0, // за 1 кв.мм
        type: [{id: 'Прозрачная', price: 0},{id: 'Комбинированная', price: 0},{id: 'Однотонная', price: 0}],
        first0: [
            { text: 'Пленка ПВХ прозрачная 500 МКМ КИТАЙ.', id: 'p1-1', price: 0.0005},
            { text: 'Пленка ПВХ прозрачная 500 МКМ Crystal Window.', id: 'p1-2', price: 0.0006 },
            { text: 'Пленка ПВХ прозрачная 700 МКМ КИТАЙ.', id: 'p1-3', price: 0.0007 },
            { text: 'Пленка ПВХ прозрачная 700 МКМ Crystal Window.', id: 'p1-4', price: 1 },
            { text: 'Пленка ПВХ прозрачная 800 МКМ КИТАЙ.', id: 'p1-5', price: 1 },
            { text: 'Пленка ПВХ прозрачная 800 МКМ Корея.', id: 'p1-6', price: 1 },
            { text: 'Пленка ПВХ тонированная 700 МКМ Crystal Window.', id: 'p1-7', price: 1 },
            { text: 'Пленка ПВХ тонированная 1000 МКМ Корея.', id: 'p1-8', price: 1 },
            { text: 'Пленка ПВХ  1000 МКМ Корея.', id: 'p1-9', price: 1 },
            { text: 'Пленка TPU термополиуретан 500 МКМ.', id: 'p1-10', price: 1 },
            { text: 'Пленка TPU термополиуретан 700 МКМ Корея.', id: 'p1-11', price: 1 }
        ],
        first1: [
                { text: 'Пленка ПВХ прозрачная 500 МКМ КИТАЙ.', id: 'p2-1', price: 0},
                { text: 'Пленка ПВХ прозрачная 500 МКМ Crystal Window.', id: 'p2-2', price: 1 },
                { text: 'Пленка ПВХ прозрачная 700 МКМ КИТАЙ.', id: 'p2-3', price: 1 },
                { text: 'Пленка ПВХ прозрачная 700 МКМ Crystal Window.', id: 'p2-4', price: 1 },
                { text: 'Пленка ПВХ прозрачная 800 МКМ КИТАЙ.', id: 'p2-5', price: 1 },
                { text: 'Пленка ПВХ прозрачная 800 МКМ Корея.', id: 'p2-6', price: 1 },
                { text: 'Пленка ПВХ тонированная 700 МКМ Crystal Window.', id: 'p2-7', price: 1 },
                { text: 'Пленка ПВХ тонированная 1000 МКМ Корея.', id: 'p2-8', price: 1 },
                { text: 'Пленка ПВХ  1000 МКМ Корея.', id: 'p2-9', price: 1 },
                { text: 'Пленка TPU термополиуретан 500 МКМ.', id: 'p2-10', price: 1 },
                { text: 'Пленка TPU термополиуретан 700 МКМ Корея.', id: 'p2-11', price: 1 }
        ],
        first2: [
            { text: 'Тентовая ткань ПВХ цветная', id: 'p3-1', price: 1 }
        ],
        colors: [
            { text: 'Коричневый', code: '#00000000', price: 1 },
            { text: 'Бежевый', code: '#00000000', price: 1 },
            { text: 'Бордовый', code: '#00000000', price: 1 },
            { text: 'Желтый', code: '#00000000', price: 1 },
            { text: 'Серый  ', code: '#00000000', price: 1 },
            { text: 'Белый', code: '#00000000', price: 1 },
            { text: 'Красный', code: '#00000000', price: 1 },
            { text: 'Оранжевый', code: '#00000000', price: 1 },
            { text: 'Синий', code: '#00000000', price: 1 },
            { text: 'Голубой', code: '#00000000', price: 1 },
            { text: 'Зеленый', code: '#00000000', price: 1 },
            { text: 'Черный', code: '#00000000', price: 1 },
        ],
        other: [
            { text: '"Намертво"', price: 1 },
            { text: '"Скоба+люверс с рем."', price: 1 },
            { text: '"Круглые люверсы"', price: 1 },
            { text: '"Длинный ремень"', price: 1 },
            { text: '"Поворотная скоба"', price: 1 },
            { text: '"Карман под утяжелитель"', price: 1 },
        ],
        checkedPrice: {
            rem: 1,
            left: 1,
            right: 1,
            mount: 1000
        }
    }
}


Функция расчёта товарки.
thisPrice: function () {
        var price = this.data.defaultPrice;
        var buf;

        price += this.lists.type[this.data.select].price;

        buf = this.searchOneLevel(this.lists['first' + this.data.select], 'id', this.data.info.first.id);
        if (buf) {
            price += buf.price;
            this.lists.kofSize = buf.price
        };

        buf = this.searchOneLevel(this.lists.colors, 'id', this.data.info.color.id);
        if (buf) price += buf.price;

        if (this.data.rem) price += this.lists.checkedPrice.rem;
        if (this.data.left) price += this.lists.checkedPrice.left;
        if (this.data.right) price += this.lists.checkedPrice.right;

        buf = this.searchOneLevel(this.lists.other, 'text', this.data.info['n-top']);
        if (buf) price += buf.price;
        buf = this.searchOneLevel(this.lists.other, 'text', this.data.info['n-bottom']);
        if (buf) price += buf.price;
        buf = this.searchOneLevel(this.lists.other, 'text', this.data.info['n-left']);
        if (buf) price += buf.price;
        buf = this.searchOneLevel(this.lists.other, 'text', this.data.info['n-right']);
        if (buf) price += buf.price;

        price *= (+$('#curtain_dim_1').val() * (+$('#curtain_dim_0').val())) * this.lists.kofSize;

        price *= +$('#col-vo').val();

        return price;
    }

searchOneLevel: function (arr, key, value) {
        var res = undefined;
        for(var i = 0; i < arr.length; i++) {
            if(arr[i][key] === value) {
                res = arr[i];
                break;
            }
        }

        return res;
    }
  • Вопрос задан
  • 119 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы