javascript - Ubrukt egenskap fjernet?
Først ting først, min klasse:
export class FooBar {
...
isFavorite: boolean = false;
constructor() {
this.isFavorite = false;
}
}
Ved å bruke Lodash sorterer jeg en liste over FooBar, slik at favorittene mine blir øverst på listen:
this.fooBars = _.orderBy(this.fooBars, ['isFavorite', 'name'], ['desc', 'asc']);
Når jeg favorittmerker et element og ser på min console.log, står det dette:
Merk at #3 ikke har egenskapen isFavorite...
Når jeg aldri setter isFavorite, vises det ikke. Dette gjør at Lodash sorterer på en feil måte.
Finnes det en måte å alltid vise denne egenskapen på, selv når den er ubrukte/ikke satt/false?
Jeg prøvde:
- Å sette egenskapen til false i klassen
- Å sette egenskapen til false i konstruktøren til klassen
- Å løpe gjennom this.foobars i komponenten min, og sette dem alle til false
- Å legge til et grensesnitt til FooBar
Svar #1
Jeg tror det er TypeScript-måten å sette en standardverdi for en klasseegenskap
export default class FooBar {
constructor(private isFavorite: boolean = false) {
...
}
}
eller rett og slett
export class FooBar {
constructor() {
this.isFavorite = false;
}
}
Eller du kan bruke en funksjon i _.orderBy iteratee for å sortere listen din deretter:
var foobars = [{isFavorite:false, name:"aaa"}, {isFavorite:true, name:"bbb"}, {isFavorite:false, name:"ccc"}, {name:"ddd"}]
foobars = _.orderBy(foobars, [function(foobar) {
return foobar.isFavorite == true;
}, "name"], ["desc", "asc"]);
console.log(foobars)<script src="https://cdn.jsdelivr.net/npm/[email /lodash.min.js"></script>