I'm working with a large JSON file that looks like this:
{
"name": "Superproduct",
"description": "Enjoy this amazing product.",
"brand": "ACME",
"categories": [
"Ball",
"Soccer Ball",
"Beach Ball"
],
"type": "Online product",
"price": 50,
"price_range": "50 - 100",
"image": "someImageURL",
"url": "SomeProductURL",
"free_shipping": true,
"popularity": 10000,
"rating": 2,
"objectID": "1234"
}
I am trying to access every object with the Ball category, so that I can add a discount to that specific item. I realized that every object can have multiple variations of the word Ball in the category array.
Is there a way I can target the word ball in the array, so that I can add that to an array and apply the discount to every product with said criteria?
This is what I have so far, but I'm not sure if this is the best way, or if there's a better way to accomplish what I'm trying to do:
async function setDiscount() {
let discountedRate = 0.5;
fetch('products.json')
.then(res => res.json())
.then(data => {for (let i = 0; i < data.length; i ) {
if (data[i].categories[i] == "Ball") {
data[i].price -= (data[i].price * discountedRate);
}
}});
}
setDiscount();
P.S.: I'm a newbie.
CodePudding user response:
You can simply achieve this by iterating the response array.
Working Demo :
const data = [{
"name": "Superproduct",
"description": "Enjoy this amazing product.",
"brand": "ACME",
"categories": [
"Ball",
"Soccer Ball",
"Beach Ball"
],
"type": "Online product",
"price": 50,
"price_range": "50 - 100",
"image": "someImageURL",
"url": "SomeProductURL",
"free_shipping": true,
"popularity": 10000,
"rating": 2,
"objectID": "1234"
}];
const discountedRate = 0.5;
data.forEach((obj) => {
obj.price = obj.categories.includes('Ball') ? (obj.price * discountedRate) : obj.price
});
console.log(data);