Добавление значения данных JSON

Я пытаюсь создать корзину с помощью js

  function fuBuyNow() {

        var prodqty = 1;
        var prodid = localStorage.ls_productID;
        var prodprice = $('#ppriceoffer').html();
        var cartItem = {
            productid: prodid,
            productqty: prodqty,
            productprice: prodprice
        };
        var cartItemJSON = JSON.stringify(cartItem);
        console.info(cartItemJSON);

        var cartArray = new Array();
        // If javascript shopping cart session is not empty
        if (localStorage.getItem('shopping-cart')) {
            cartArray = JSON.parse(localStorage.getItem('shopping-cart'));
        }
        cartArray.push(cartItemJSON);

        var cartJSON = JSON.stringify(cartArray);
        localStorage.setItem('shopping-cart', cartJSON);

    }

теперь у меня есть данные корзины в массиве, я хочу суммировать productid = 10005, productid = 10001 цену и создать новый массив

var obj = "[{"slno":"1","productid":"10001","qty":"1","price":"250"},{"slno":"2","productid":"10005","qty":"1","price":"350"},{"slno":"3","productid":"10001","qty":"1","price":"250"},{"slno":"4","productid":"10003","qty":"1","price":"450"},{"slno":"5","productid":"10005","qty":"1","price":"350"}]";

🤔 А знаете ли вы, что...
JavaScript позволяет создавать динамические и интерактивные веб-приложения.


70
1

Ответ:

Решено

Вы можете добиться этого, используя методы массива JavaScript вместе с jQuery, если вы работаете с элементами DOM. Вот как вы можете это сделать:

var obj = [{"slno":"1","productid":"10001","qty":"1","price":"250"},{"slno":"2","productid":"10005","qty":"1","price":"350"},{"slno":"3","productid":"10001","qty":"1","price":"250"},{"slno":"4","productid":"10003","qty":"1","price":"450"},{"slno":"5","productid":"10005","qty":"1","price":"350"}];

// Filter the array to get only the items with productid = 10005 or productid = 10001
var filteredArray = obj.filter(function(item) {
    return item.productid === "10005" || item.productid === "10001";
});

// Calculate the total price
var totalPrice = filteredArray.reduce(function(acc, item) {
    return acc + parseInt(item.price);
}, 0);

// Create a new array with the total price
var newArray = [{ "totalPrice": totalPrice }];

console.info(newArray);

Этот код фильтрует исходный массив, чтобы включить только товары с идентификатором продукта, равным «10005» или «10001», затем вычисляет общую цену этих товаров и, наконец, создает новый массив с общей ценой. Вы можете использовать этот newArray для отображения или управления общей ценой по мере необходимости. Если у вас есть дополнительные вопросы, не стесняйтесь спрашивать!

Обновление 1:

var obj = [
    {"slno":"1","productid":"10001","qty":"1","price":"250"},
    {"slno":"2","productid":"10005","qty":"1","price":"350"},
    {"slno":"3","productid":"10001","qty":"1","price":"250"},
    {"slno":"4","productid":"10003","qty":"1","price":"450"},
    {"slno":"5","productid":"10005","qty":"1","price":"350"}
];

var aggregatedArray = [];

obj.forEach(function(item) {
    var existingItem = aggregatedArray.find(function(aggregatedItem) {
        return aggregatedItem.productid === item.productid;
    });

    if (existingItem) {
        existingItem.qty = parseInt(existingItem.qty) + 1;
        existingItem.price = parseInt(existingItem.price) + parseInt(item.price);
    } else {
        aggregatedArray.push({
            slno: item.slno,
            productid: item.productid,
            qty: item.qty,
            price: item.price
        });
    }
});

var newArray = JSON.stringify(aggregatedArray);

console.info(newArray);

попробуй это