ro'yxatdagi (javascript) ob'ektning ikkita xususiyatini jamlash

Bu kabi narsalarga ega bo'lgan ro'yxat bor

{ quantity: '', price: '', amount: '' }

Bu ob'ektlar dinamik ravishda qo'shiladi, mening savolim miqdori va narxini summaning qiymatiga tenglashtiradimi, shuning uchun summaning narxi yoki miqdori bo'yicha ham o'zgaradi?

0
Ob'ektingizda narx, miqdori va/yoki miqdori o'zgarganda har bir o'zgarish hodisasini o'qib, hisobingizni to'ldirishingiz kerak.
qo'shib qo'ydi muallif John, manba

6 javoblar

Ehtimol, summani olish uchun funktsiya kerak:

a = ({
  quantity: '',
  price: '',
  get amount() {
    return +this.quantity + +this.price;
  }
})

keyin miqdori va narx summasi uchun a.amount ga kirishingiz mumkin.

1
qo'shib qo'ydi

Garchi operatsiya "additon" o'rniga "ko'paytirish" kerak deb o'ylayman. Quyidagilarni tekshirib ko'ring:

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

var array = [{ quantity: 10, price: 200, amount: '' },{ quantity: 5, price: 100, amount: '' }]
var newArray = array.map(function(elem, index){
        array[index].amount = array[index].quantity + array[index].price
        return;
});
        
console.log(array);
</div> </div>
1
qo'shib qo'ydi

Ro'yxatdagi narsaga tegishli yangi komponentni yaratishingiz mumkin

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

var vm = new Vue({
      el: '#example',
      data: {
        quantity: '', 
        price: ''
      },
      computed: {
        amount: function(){
          return this.quantity * this.price
        }
        
      }
    })
</div> </div>

Va keyin miqdor va narx asosida hisoblangan mulkni yarating.

0
qo'shib qo'ydi
Ko'rib turganimdek, men bunga sodiq qolaman, chunki miqdori va narxini sarflash mantiqsiz. POP, ehtimol, u erda xat yozildi. Bizning javoblarimiz bir xil, bir vaqtning o'zida joylashtirilgan
qo'shib qo'ydi muallif Borjante, manba
Men this.quantity * this.price hususiyatiga shaxsan rozi bo'lsam-da, OP nima sababdan pul so'radi. : /
qo'shib qo'ydi muallif Amresh Venugopal, manba
Zaxira qilish uchun hech qanday upravlum yo'q. :) Lekin sizning haqqingiz bor
qo'shib qo'ydi muallif Amresh Venugopal, manba

Siz vuejs dan foydalanganingiz uchun [computed] [1] xususiyatlaridan foydalanib, maqsadingizga osongina erishishingiz mumkin.

Misol:

export default {
  data() {
    return {
      quantity: '',
      price: ''
    }
  },
  computed: {
    amount() {
      return this.quantity + this.price
    }
  }
}

hisoblangan xususiyatlarini this.computedProp = someValue kabi belgilash mumkin emas va ular funktsiyalari emas, balki ular Ma'lumotlar xususiyatlari.

0
qo'shib qo'ydi

Sifat asosida narxni hisoblash uchun oddiygina {{item.price * item.quantity}} dan foydalaning. Ma'lumotlar bazasini zarur bo'lmagan umumiy maydonga aylantirishni istamaysiz deb o'ylayman :-)

Misol (jami narxni o'z ichiga olgan holda)

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

new Vue({
    el:'#app',
    data: {
        list: [
            { name: 'foo', quantity: 2, price: 20 },
            { name: 'bar', quantity: 3, price: 150 },
            { name: 'baz', quantity: 1, price: 80 }
        ]
    },
    computed: {
        total(){ return this.list.reduce( (total, item) => item.price * item.quantity + total  ,0);},
    }
})
ul {list-style:none;}
li:last-child { border-top:1px solid;border-bottom:3px double;}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.1.10/vue.min.js"></script>



<div id="app">
   
  • {{ item.name}}: {{ item.price * item.quantity}}
  • Total: {{ total }}
</div>
</div> </div>

0
qo'shib qo'ydi

to'g'ri JavaScript variantlari mavjud. Vuega xos narsalar haqida gapirmadim.

Men uchun eng qulay narsa sizning ob'ektlaringizga getAmount -method qo'shiladi, bu sizning mablag'ingizni boshqa ikkita xususiyatga asoslangan holda qaytaradi.
masalan,

var item = {
  quantity: 3,
  price: 5.00,
  getAmount: function() {
    return this.quantity * this.price
  }
}

Although I'd with null as default values.
A second option is to use object descriptors. You can create an object using Object.create() or add properties to an already existing object using Object.defineProperty(). Both of these methods allow you to pass an object descriptor, where you can define a getter for your property, which will calculate your desired value based on your other fields.
e.g.

var item = Object.create({
  quantity: null,
  price: null,
}, {
  amount: {
    get: function() { return this.quantity*this.price }
  }
})

Endi item.amount orqali miqdori xususiyati miqdori * narxlari ni qaytaradi.

0
qo'shib qo'ydi
Javascript UZB
Javascript UZB
99 ishtirokchilar

@js_uzb @vuejs_uz @react_uz @nodejs_uz @angular_uz @ngTashkent @yiiframework_uz @laravel_uz @linux_uzbek @python_uz @swift_uzb —————— @uzdevgroup @UzGeeksGroup ——— @UzDev_Jobs @jobs_uzb

VueJS_uz
VueJS_uz
83 ishtirokchilar

VueJS (vuejs.org) freymvorkining o'zbek tilidagi jamiyati Telegram guruhi. Boshqa guruhlar: @js_uzb @vuejs_uz @react_uz @nodejs_uz @angular_uz @ngTashkent @yiiframework_uz @laravel_uz @linux_uzbek —————— @uzdevgroup ————— @UzDev_Jobs