मैं Vue के साथ शुरुआत कर रहा हूँ। मैं एक सरणी के एक वस्तु में विभिन्न तत्वों के योग की गणना करने के लिए संघर्ष कर रहा हूँ।

मेरी सरणी इस तरह दिखती है:

    sites: [{
       sku: 10001,
       name: "Product A",
       totalPrice: '',
       values: [{
          price: 10,
          discount: 5,
          color: "red"
       },
       {
           price: 15,
           discount: 8,
           color: "black"
       }]
    },
    {
      sku: 10002,
      name: "Product B",
      totalPrice: '',
      values: [{
         price: 13,
         discount: 3,
         color: "purple"
       },
       {
           price: 20,
           discount: 5,
           color: "green"
       }]
   }]

मैं कीमत का योग करने की कोशिश कर रहा हूं और इसे totalPrice पर सेट कर रहा हूं। तो सरणी कुल मूल्य को नीचे के रूप में बदल देगी:

sku: 10001,
      name: "Product A",
      totalPrice: 25,

sku: 10002,
      name: "Product B",
      totalPrice: 33,

मेरा मानना ​​​​है कि मुझे उन्हें योग करने के लिए नीचे की तरह कुछ उपयोग करने की ज़रूरत है, हालांकि मैं यह नहीं समझ सकता कि यह कैसे करें!

computed: {
    total(){ return this.sites.reduce( (total, item) => item.values. price + total  ,0);}
  },

मैं मूल्य के योग की गणना कैसे करूं और इसे कुल मूल्य के रूप में कैसे सेट करूं?

मैंने एसओ की यात्रा की है और इसी तरह के धागे ढूंढे हैं, हालांकि ऐसा कुछ भी नहीं है जो मुझे अपने मुद्दे के साथ काम करने के लिए मिल सके।

1
tbowden 17 जून 2019, 01:36

1 उत्तर

सबसे बढ़िया उत्तर
computed: {
  total() {
    let newojv = []
    sites.forEach((item, _) => {
      let s = item.values.map((items2, _) => {
        return items2.price;
      })
      let sum = s.reduce((a, b) => a + b);
      newojv.push({
        sku: item.sku,
        name: item.name,
        totalPrice: sum
      });
    });
    return newojv;
  }
}

नीचे दी गई वस्तुओं की प्रत्येक सरणी के लिए सबसे पहले

{
  sku: 10001,
  name: "Product A",
  totalPrice: '',
  values: [{
      price: 10,
      discount: 5,
      color: "red"
    },
    {
      price: 15,
      discount: 8,
      color: "black"
    }
  ]
}

और फिर नीचे दी गई वस्तुओं की प्रत्येक सरणी के लिए

values: [{
      price: 10,
      discount: 5,
      color: "red"
    },
    {
      price: 15,
      discount: 8,
      color: "black"
    }
  ]

हम मूल्य के मान प्राप्त करने के लिए सरणी को मैप करते हैं, जो कि 10,15 है। फिर हम सरणी को कम करते हैं, इसे जोड़ते हैं और फिर इसे धक्का देते हैं।

let sum = s.reduce((a, b) => a + b);
newojv.push({
    sku: item.sku,
    name: item.name,
    totalPrice: sum
});

एक कामकाजी उदाहरण हो सकता है

let sites = [{
  sku: 10001,
  name: "Product A",
  totalPrice: '',
  values: [{
      price: 10,
      discount: 5,
      color: "red"
    },
    {
      price: 15,
      discount: 8,
      color: "black"
    }
  ]
}, {
  sku: 10002,
  name: "Product B",
  totalPrice: '',
  values: [{
      price: 13,
      discount: 3,
      color: "purple"
    },
    {
      price: 20,
      discount: 5,
      color: "green"
    }
  ]
}]
let newojv = []
sites.forEach((item, _) => {
  let s = item.values.map((items2, _) => {
    return items2.price;
  })
  let sum = s.reduce((a, b) => a + b);
  newojv.push({
    sku: item.sku,
    name: item.name,
    totalPrice: sum
  });
});
console.log(newojv)
2
weegee 17 जून 2019, 02:09