Searching and updating a value in an array using JavaScript

I need help solving a Javascript issue I'm facing. I'm working on an e-commerce project built in Vue, and I want to implement the selection of product variants on the client-side. The data format being sent to the backend looks like this:

{
    "options": [
        {
            "key": "Size",
            "value": "L"
        },
        {
            "key": "Color",
            "value": "Green"
        }
    ]
}

The backend responds with the price of the selected options, and the product ID is retrieved from the URL. To capture the selected options on the frontend, I am using the following code snippet:

getVariationPrice(id, attr, value){
            this.variation.options.push({
                    key: attr,
                    value: value
        });

In this function, 'id' represents the product ID taken from the URL.

To display the attributes for each product, I have implemented the markup as follows:

 <span v-for="(attributes, index) in product.attributes" :key="index">
         {{ attributes.key }}
    <v-chip-group active-class="deep-purple accent-4 white--text" column>
       <span v-for="(values, vIndex) in attributes.values" :key="vIndex">
         <v-chip  @click="getVariationPrice(product.id, attributes.key, values)">{{ values }}</v-chip>
       </span>
    </v-chip-group>
  </span>

The issue arises when selecting values, causing them to be appended to the array incorrectly. I'm looking for a way to make these values replaceable, considering that the backend may return different attribute keys and values, not limited to just size and color. The backend must only return the selected keys and values.

PS: Keep in mind that the backend may provide a variety of attributes, and it will verify each given value before searching for the product. The returned data should include only the selected keys and values.

Answer №1

Using v-model with v-chip-group in Vuetify can simplify your code.

<v-chip-group v-model="selectedItems" multiple></v-chip-group>

Make sure to assign a value to each chip for proper functionality.

No need to manually handle click events, v-model will take care of updating the selected items automatically.

I hope this tip proves useful!

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Oops! The system encountered a problem while trying to identify the value `Han` for the property `Script

I'm attempting to extract Chinese characters from a string. According to this particular answer, the following code snippet should work: const nonChinese = /[^\p{Script=Han}]/gimu; const text = "asdP asfasf这些年asfagg 我开源的 几 ...

What is a dynamic way to enforce input as required on a form?

I've created a simple input component with the following structure: <template> <div c> <label :class="required ? 'required' : ''">{{ label }}</label> <div > <input :value ...

Hidden form in JavaScript does not submit upon clicking the text

My previous question was similar to this but with a smaller example. However, the issue with that code differs from my current code. (If you're curious, here's my previous question: JavaScript Text not submitting form) Currently working on my fi ...

Guide: "Changing an HTML element's class by utilizing its id attribute"

This is the HTML code snippet I am working with: <li class="treeview" id="account_management"> I need to select the element with the id of "account_management" and update its class from "treeview" to "treeview active" in order to ...

How to create a custom hover effect for IconButtons in Material-UI

Customizing Hover Effects on IconButton I am currently using an IconButton component from Material-UI and have noticed a subtle grey border that appears when hovering over the icon. I am looking for a way to disable this hover effect, as I cannot seem to ...

Tips for swapping images as a webpage is scrolled [using HTML and JavaScript]

Hi there, I am looking to make some changes to a JavaScript code that will switch out a fixed image depending on the user's scrolling behavior. For example, when the page loads, the image should be displayed on the right side. As the user scrolls down ...

Is it possible to implement an SSL certificate with my Next JS deployment?

Currently, I am running a Next.js deployment on an EC2 instance and looking to secure it with an SSL certificate. My initial thought was to use a custom server config for this purpose, but I'm concerned that it may impact certain optimizations that I& ...

React Native backhandler malfunctioning - seeking solution

Version react-native-router-flux v4.0.0-beta.31, react-native v0.55.2 Expected outcome The backhandler should respond according to the conditions specified in the backhandler function provided to the Router props. Current behavior Every time the har ...

jQuery sorting function is utilized to organize a table after its rows have been modified through an ajax

My website features an election section that displays updated election numbers in real-time. Previously, users had to refresh the page to see new results. I have implemented code that utilizes a custom REST API to fetch live numbers and jQuery to dynamica ...

Exploring techniques to maintain search functionality on altered display columns in DataTables.js

How can I ensure that the search functionality works properly on the modified render column in DataTables.js? In the code snippet provided below, my attempts to search data within the render columns are not yielding any results. $('#release-table& ...

The AJAX in Code Igniter is throwing an error due to an undefined index 'id

I'm encountering an issue when calling a function in AJAX, as it shows the error message "Undefined index: id". Strangely, if I have only one button in the view, the function works fine. However, when there are two buttons present, the error occurs. W ...

Retrieving a nested sub collection within each object of a Firebase collection in a React application

I'm working on a React app that retrieves elements from Firebase and displays them in a grid. I want to show a list of subcollection elements for each grid line, but I'm unsure how to achieve this. Here's where I currently stand: export defa ...

Issues encountered during the installation of Electron JS

Having trouble installing electronjs in Node.js 18 LTS and NPM 10? Getting an error message like this? PS C:\Users\Administrator.GWNR71517\Desktop\electron> npm install electron --save-dev npm ERR! code 1 npm ERR! path C:\Users& ...

Implement a transition effect for when elements change size using the `.resizable().css` method

I attempted to incorporate a deceleration effect when resizing an element back to its original size using the resizable method. The slowdown effect should only trigger during the click event (when the "Click-me" button is pressed), not while manipulating ...

What is the best method for enclosing all text within an HTML document with a different element?

For example: FROM <div> whats up! <div> whats up2! </div> thank you for your help <div></div> </div> TO <div> <span>whats up!</span> <div><span> whats up2! </span&g ...

Converting CSS into jQuery

I am exploring ways to create a collapsible section with arrow icons (right and down arrows) in jQuery or JavaScript. Can anyone provide guidance on how to convert my CSS styling into jQuery code? Below is the jQuery approach I have attempted: $(document ...

AngularJS Currency Converter - Converting Currencies with Ease

I have a question regarding the most efficient way to handle currency conversion on a webpage. Currently, I have multiple input fields displaying different currencies. When a user clicks on the currency conversion button, a modal popup appears. After the ...

What is the best way to set a checkbox to null instead of false using Angular?

I am currently developing a filtering system that allows users to select different parameters to filter through a list of items. For instance, the item list could be a collection of dishes with filters represented as checkboxes labeled as vegan, vegetaria ...

Using javascript to locate and substitute a word divided among multiple tags - a step-by-step guide

I need to utilize JavaScript to locate and substitute a word that has been separated into multiple tags. For instance, consider the following HTML code: <html> <body> <div id="page-container"> This is an apple. ...

Failure to load image logo when refreshing the page

There's something peculiar happening in my App.vue. Imagine I have a route link, let's say it's localhost/tools or any similar route. The logo image will display on this route. Take a look at the image here https://i.stack.imgur.com/6HaXI.p ...