Это то, чего вы пытаетесь достичь sh?
new Vue({
el: '#app',
data(){
return{
options: [
{
name: 'Radio2',
price: '100',
inputname: 'rady',
option_type: 'radio'
},
{
name: 'Radio1',
price: '50',
inputname: 'rady',
option_type: 'radio'
},
{
name: 'Radio2',
price: '50',
inputname: 'brady',
option_type: 'radio'
},
{
name: 'Radio1',
price: '60',
inputname: 'brady',
option_type: 'radio'
},
],
selected: {},
}
},
computed: {
radioGroups() {
const obj = {};
this.options.forEach(option => {
if (option.option_type === 'radio') {
if (!obj[option.inputname]) {
obj[option.inputname] = [];
}
obj[option.inputname].push({name: option.name, value: option.price})
}
})
return Object.entries(obj).map(([key, value]) => {
return {
label: key,
items: value,
}
})
}
},
})
<link type="text/css" rel="stylesheet" href="//unpkg.com/bootstrap/dist/css/bootstrap.min.css" />
<link type="text/css" rel="stylesheet" href="//unpkg.com/bootstrap-vue@latest/dist/bootstrap-vue.min.css" />
<!-- Load polyfills to support older browsers -->
<script src="//polyfill.io/v3/polyfill.min.js?features=es2015%2CIntersectionObserver" crossorigin="anonymous"></script>
<!-- Load Vue followed by BootstrapVue -->
<script src="//unpkg.com/vue@latest/dist/vue.min.js"></script>
<script src="//unpkg.com/bootstrap-vue@latest/dist/bootstrap-vue.min.js"></script>
<!-- Load the following for BootstrapVueIcons support -->
<script src="//unpkg.com/bootstrap-vue@latest/dist/bootstrap-vue-icons.min.js"></script>
<div id='app'>
<b-form-group v-for="radioGroup in radioGroups" :label="radioGroup.label">
<b-form-radio v-for="item in radioGroup.items" v-model="selected[radioGroup.label]" :name="radioGroup.label + item.name" :value="item.value">
{{ item.name }} - {{ item.value }}
</b-form-radio>
</b-form-group>
{{ selected }}
</div>