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>

Relaterte artikler