I'm working on a couponcode VueJS app, in which I want to check an array with different discountcodes on matching values. Below I have an array with two discountcodes. If the button is clicked, I want to check the array for any matches. I am not sure what would be the best solution for this..
<template>
<div class="container">
<input placeholder='type discount' v-model="discountInput">
<button @click="checkDiscount">check for discount</button>
<span class="alert" v-if="discountValid">
Code juist
</span>
<span class="alert" v-if="discountInvalid">
Code onjuist
</span>
</div>
</template>
<script>
export default {
props: {
},
data: () => {
return {
discountInput: '',
discountValid: false,
discountInvalid: false,
discountCodes: [
{ code: 'discount-code-1', message: '10% discount' },
{ code: 'discount-code-2', message: '5 dollar discount' }
]
}
},
components: {
},
methods: {
checkDiscount() {
if (this.discountInput === this.discountCode) {
return true;
} else {
return false;
}
}
},
watch: {
}
}
</script>
this.discountInput === this.discountCodebut there is nodiscountCode. You havediscountCodeswith an s but not a singulardiscountCode.checkDiscountneeds to iterate the array ofdiscountCodes(with s), and you can't comparediscountInputto the array element (let's say "d") becausedis an object and the input is a string. To find a match you have to findd.codethat matchesdiscountInput. Thefindandsomesuggested in answers are a great way to iterate with a lambda.