【问题标题】:How to slice between m and n in javascript?如何在javascript中在m和n之间切片?
【发布时间】:2021-10-16 00:05:28
【问题描述】:

我有一个获取数据列表的 observable。我被 angular 提供的slice 管道所欺骗,尽管它不是一个难点。下面是我的例子:

value$: Observable<number[]>;
// this is present in TS. Let's say this fetches an array with value as [1, 2, 3, 4, 5, 6, 7, 8, 9]

现在我想要将此数组划分为 3 个不同的 div,其中第一个将采用前 6 个元素,最后一个将采用最后 3 个元素,第二个将采用前 6 个和最后一个之间的元素3.为此我写了以下逻辑:

第 1 部分

<div *ngFor="let ele of value$ | async | slice: 0:6">...</div>
// This is working fine

第 2 部分

<div *ngFor="let ele of value$ | async | slice: -4:6">...</div>
// This is not working fine

第 3 部分

<div *ngFor="let ele of value$ | async | slice: -3">...</div>
// This is working fine

第二个div 没有按预期工作,而是从第一个div 中获取一些值。

谁能指出我在这里做错了什么?

【问题讨论】:

  • 第二个将采用前 6 个和后 3 个之间存在的元素。前 6 个和后 3 个之间没有元素。有 9 个元素。
  • 如果有我的逻辑是否正确?并且如果假设上述条件不满足,那么在 div 1 中显示前 6 个后,它会在 div 2 中显示其余部分,而 div 3 将为空白?
  • 前六个之后和最后三个之前的元素将是slice(6, -3)。不是slice(-4, 6)
  • 让我看看这个

标签: javascript html angular typescript rxjs


【解决方案1】:

在我看来,实现这一点的最佳方法是使用 splice,因为假设您的数组大小是动态的,那么您不需要第二个数组的大小。 最大的问题是你的初始集合只包含 9 个元素,所以第一个元素取 6,最后一个取 3,什么都没有了,回头看 -4 索引,你会找到第一个数组的最后一个索引。

通过使用 splice,您可以获得相同的结果并准确显示前 6 个和后 3 个。

每当您对可以使用的功能有任何疑问时 Slice - mdn web docs.

Splice- mdn web docs

【讨论】:

  • 感谢您的回复,但我使用 slice 管道和 ngFor 角度所以现在不能接受答案:(
  • 没有什么能阻止你在 ts onInit 或其他东西之前处理数据,预先定义每个数组并选择你的数据
猜你喜欢
  • 2014-07-25
  • 2022-12-02
  • 2021-09-25
  • 2018-09-30
  • 1970-01-01
  • 1970-01-01
  • 2021-02-15
  • 1970-01-01
  • 2020-01-14
相关资源
最近更新 更多