未使用的财产掉了吗?

时间:2018-07-19 13:34:23

标签: javascript json angular typescript lodash

第一课,我的班级:

export class FooBar {
 ...
 isFavorite: boolean = false;

 constructor() {
   this.isFavorite = false;
  }
}

使用Lodash,我对FooBar的列表进行了排序,因此我的收藏夹位于列表的顶部:

this.fooBars = _.orderBy(this.fooBars, ['isFavorite', 'name'], ['desc', 'asc']);

当我喜欢一个项目并查看我的console.log时,它指出:

isFavorite is not shown when false

请注意,#3没有isFavorite属性...

每当我从不设置isFavorite时,它不会显示。这使Lodash发生了错误的事情。
有没有办法始终显示此属性,即使它未使用/未设置/为假?

我尝试过:
 -在类中将该属性设置为false
 -在类的构造函数中将属性设置为false
 -在我的组件中循环this.foobars,并将它们全部设置为false
 -将接口添加到FooBar

1 个答案:

答案 0 :(得分:0)

我认为这是默认的类专有性的typeScript方法

export default class FooBar {
  constructor(private isFavorite: boolean = false) {
     ...
  }
}

或者简单地

export class FooBar {
  constructor() {
     this.isFavorite = false;
  }
}

或者您可以在_.orderBy iteratee中使用一个函数对列表进行相应的排序:

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/lodash@4.17.10/lodash.min.js"></script>