Для цикла с Javascript для получения значений - PullRequest
0 голосов
/ 10 октября 2019

У меня есть эта переменная с именем: var количество .

Эта переменная постоянно меняется. Например: количество = 1, количество = 26 ...

С другой стороны, у меня есть массив элементов с ценами в зависимости от количества продукта: var amount_prices.

var quantity_prices = [
    {
        "quantity": 1,
        "price_pvp": 7.96
    }, {
        "quantity": 5,
        "price_pvp": 7.96
    }, {
        "quantity": 15,
        "price_pvp": 6.97
    }, {
        "quantity": 25,
        "price_pvp": 5.97
    }
];

Я хочу сделать так, чтобы, если количество находится между количествами 1 и 5, 6 и 14, 15 и 24, продукт имел правильную цену. Пример: если количество составляет 16, цена, которую я хочу взять, составляет: 5,95 €.

Я думал об использовании цикла for, но я не знаю, как продолжать делать эту работу, чтоЯ хочу сделать:

for (var i = 0; i < this.quantity_prices.length; i++) { // if quantity is between 1 and 5
    new_price = this.quantity_prices[i].price_pvp;
    // elseif quantity is between 6 and 14
    new_price = this.quantity_prices[i].price_pvp;
    // elseif quantity is between 15 and 24
    new_price = this.quantity_prices[i].price_pvp;
}

Ответы [ 4 ]

0 голосов
/ 10 октября 2019
var quantity_prices = [
    {
    "quantity": 1,
    "price_pvp": 7.96,
    },
    {
    "quantity": 5,
    "price_pvp": 7.96,
    },
    {
    "quantity": 15,
    "price_pvp": 6.97,
    },
    {
    "quantity": 25,
    "price_pvp": 5.97,
    }
    ];

for(let i=0;i<quantity_prices.length;i++){
    if(quantity_prices[i].quantity>0 && quantity_prices[i].quantity<5 )
      {
          //whatever the required output you want.
        quantity_prices[i].new_price=quantity_prices[i].price_pvp;

      }if(quantity_prices[i].quantity>6 && quantity_prices[i].quantity<14){

     }
     if(quantity_prices[i].quantity>15 && quantity_prices[i].quantity<24){

     }
}
console.log(quantity_prices)
0 голосов
/ 10 октября 2019

Вы можете найти нужное количество, а затем вернуть цену для этой суммы.

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

const quantity_prices = [ { "quantity": 1, "price_pvp": 7.96, }, { "quantity": 5, "price_pvp": 7.96, }, { "quantity": 15, "price_pvp": 6.97, }, { "quantity": 25, "price_pvp": 5.97, } ];

function getPrice(quantity, priceLookup) {
    let entry = priceLookup.find((e,index) => e.quantity >= quantity || index === priceLookup.length-1);
    return entry.price_pvp;
}

console.log("Price table:");
const quantities = [1,4,5,10,15,16,25,26,30];
for(let quantity of quantities ) {
    console.log(`Price (${quantity }): €${getPrice(quantity, quantity_prices)}`);
}
0 голосов
/ 10 октября 2019

Вот попробуй с этим:

                 function check(){
                   this.quantity_prices.find(({price}) => {
                      if(price_pvp > 1 && price_pvp < 5){
                         // do something
                      }
                      if(price_pvp > 6 && price_pvp < 14){
                         // do something
                      }
                      if(price_pvp > 15 && price_pvp < 24){
                         // do something
                      }
                   }
                 }
0 голосов
/ 10 октября 2019

Вы можете сгруппировать в соответствии с вашим требованием согласно приведенному ниже коду, а затем распечатать цену.

var quantity_prices = [{
    "quantity": 1,
    "price_pvp": 7.96,
  },
  {
    "quantity": 5,
    "price_pvp": 7.96,
  },
  {
    "quantity": 15,
    "price_pvp": 6.97,
  },
  {
    "quantity": 25,
    "price_pvp": 5.97,
  }
];

var group1_5 = quantity_prices.filter(q => q.quantity >= 1 && q.quantity <= 5);
console.log(group1_5);

//print your price
if (group1_5.length > 0) {
  console.log(group1_5[0].price_pvp)
}

var group6_16 = quantity_prices.filter(q => q.quantity >= 6 && q.quantity <= 14);
console.log(group6_16);
...