I have vue data:
data: {
offices: requestData,
selectedFloors: [
"3",
"4",
"5",
"10",
"11",
"12",
],
minJobAngle: 0,
maxJobAngle: 80,
minAreaAngle: 0,
maxAreaAngle: 900
}
And I need to use selected floors for filtering table rows. Filtering works fine but the order of selected floors in the filter is 10, 11, 12, 3, 4, 5
I have this function in my methods
getFilteredOffices() {
const areaMin = this.sliderAreaMin;
const areaMax = this.sliderAreaMax;
const jobsMin = this.sliderJobMin;
const jobsMax = this.sliderJobMax;
const floors = this.selectedFloors;
return this.offices.filter(function (item) {
if (item.acf.suurus < areaMin || item.acf.suurus > areaMax) {
return false;
}
if (item.acf.tookohad < jobsMin || item.acf.tookohad > jobsMax) {
return false;
}
if (!floors.includes(item.acf.floor)) {
return false;
}
return true;
});
}
This under computed
getAvailableFloors() {
const set = new Set();
const sorted = this.offices.sort((a, b) => {
if (a.acf.floor > b.acf.floor) {
return 1;
}
if (a.acf.floor < b.acf.floor) {
return -1;
}
return 0;
});
sorted.forEach((office) => {
set.add(office.acf.floor);
});
return set;
},
And this is my html
<label :class="['checkbox-label floor' + item]" v-for="item in this.getAvailableFloors">
<input type="checkbox" name="floor" :value="item" v-model="selectedFloors"> @{{ item }}
<span class="checkmark"></span>
</label>
Any idea what I am missing and how I get these floors displayed like this 3,4,5,10,11,12?