当我在数组上使用模块化索引时,为什么我的打字稿功能会中断?

时间:2017-09-04 16:21:23

标签: arrays angular typescript

我有一个图像轮播/滑块,它具有获取下一个图像的功能:

getNext() {
    this.i = this.i===this.Artwks.length ? this.i : (this.i + 1)%this.Artwks.length;
    this.artworks.next(this.Artwks[this.i])
    this.getSlide();
}

这很好用,并调用getSlide函数在数组中显示正确的图像。

我的getPrev()函数几乎完全相同,但

(this.i - 1)%this.Artwks.length;

似乎打破了它。

Artwks是一个数组,我是一个初始化为0的数字。这里发生了什么?

3 个答案:

答案 0 :(得分:1)

你遇到的问题是以数字为模的负数将导致负数,从而导致负数指数未定义。

-1 % 10 === -1

答案 1 :(得分:1)

当i达到等于0的值时,i - 1等于-1,并且使用该索引可能会尝试到达一个给出错误的数组。尝试执行以下操作:

  getPrev() {
        this.i = this.i===this.Artwks.length ? this.i : this.i === 0 ? 1 : (this.i - 1 )%this.Artwks.length;
    ...
    }

this.i = this.i===this.Artwks.length || this.i === 0? this.i : (this.i - 1 )%this.Artwks.length;

答案 2 :(得分:0)

我想到的可能是尝试添加一个if语句,只在你的数组大于0时才调用getPrev()当前它正在做你告诉它的事情,不是吗?

If(currDisplayPic > 0)
   getPrev();

将它放入一个按钮,以便在需要时调用它

很抱歉我不得不在手机上编辑即时回复,过早按下我的帖子按钮..无论如何

我可能错误的是,我仍然喜欢编程JS和TS,但据我所知,数组可以很容易地计算,但是下降它需要知道它可以..不?