I need to filter an array depending on the values of one of the keys in the object, but I get an error:
Property 'sort' does not exist on type 'Object'
I expected that if panel.sort
is true
, the array worktop
would be rendered. Otherwise, the array groupA
would be rendered.
What am I doing wrong? Why is my sort
key not visible?
export default class PanelSettings extends Vue {
panels: Array < Object > = [{
id: 0,
name: "one",
sort: true
},
{
id: 1,
name: "two",
sort: true
},
{
id: 2,
name: "three",
sort: true
},
{
id: 3,
name: "four",
sort: true
},
{
id: 4,
name: "five",
sort: true
},
{
id: 5,
name: "six",
sort: true
},
{
id: 6,
name: "seven",
sort: false
},
{
id: 7,
name: "eight",
sort: false
},
{
id: 8,
name: "nine",
sort: false
},
{
id: 9,
name: "ten",
sort: false
},
{
id: 10,
name: "eleven",
sort: false
}
];
get worktop() {
return this.panels.filter(function(panel) {
return panel.sort == true;
});
};
get groupA() {
return this.panels.filter(function(panel) {
return panel.sort == false;
});
};
}
<ul>
<li v-for="panel in worktop" :key="panel.id" class="mb-3 mr-8">
<div>
<tw-pannel class="text-danger button">
<tw-icon name="minus" />
<span>{{panel.name}}</span>
</tw-pannel>
</div>
</li>
</ul>
<ul>
<li v-for="panel in groupA" :key="panel.id" class="mb-3 mr-8">
<div>
<tw-pannel class="text-primary">
<tw-icon name="plus" />
<span>{{panel.name}}</span>
</tw-pannel>
</div>
</li>
</ul>