不要计算array.lenght中的空值

时间:2017-07-12 08:57:00

标签: javascript arrays

我有问题我想得到模型的长度,但总是等于2.

如果我显示modelFriend.lenght我有这个:[Thu Jul 06 2017 00:00:00 GMT+0200,null]

null被视为一个值,因此length等于2.

如果我选择一个日期,如何计算modelFriend.lenght = 1的实际尺码,如果我选择2个日期,怎么算modelFriend.lenght = 2

这是我的代码:

public selectDate = (date) => {
  if (this.mode === 'period') {
    const dates = this._modelFriend ? [this._modelFriend[0], this._modelFriend[1]] : [null, null]

    if (!dates[0] || dates[1]) {
      dates[0] = date
      dates[1] = null
    } else {
      dates[1] = date
    }
    this._modelFriend = dates
    if (this._modelFriend.length === 2 ) {

      this.model = dates

    }

2 个答案:

答案 0 :(得分:1)

您可以使用下面的函数(使用filter)来计算数组中的非null元素:



function countNonEmpty(array) {
  return array.filter(Boolean).length;
}

var array = [new Date(), null];
console.log(countNonEmpty(array));




答案 1 :(得分:0)

我假设在你的情况下数组的长度总是为2。这就是为什么我只是检查是否this._modelFriend[0]!=null && this._modelFriend[1]!=null,而不是进行过滤并检查新过滤数组的长度。如果表达式的计算结果为true,则表示您有2个日期。

其他一切都很复杂,难以阅读和开销。