0

切片管道不包括 Angular 数组中的最后一位。

我正在做这个项目,需要 Angular 中的切片管道。

以下是相同的代码:

<p>{{ [1,2,3,4,5,6] | slice:0:-1 }}</p>

在这种情况下,输出是1,2,3,4,5

我知道带有第二个参数的角切片管不被排除在外。

没有错误,我期待的价值1,2,3,4,5,6

4

2 回答 2

1

AngularSlicePipe行为基于 JavaScript APIArray.prototype.slice()String.prototype.slice(). 的end参数slice提取到但不包括 end

JavaScript 示例

let a = [1, 2, 3, 4, 5, 6];
a.slice(0, -1);

输出

[1, 2, 3, 4, 5]

Angular 文档SlicePipe

创建一个包含元素子集(切片)的新数组或字符串。

使用说明

所有行为均基于 JavaScript APIArray.prototype.slice()String.prototype.slice().

在 an 上操作时,即使返回所有元素Array,返回的始终是副本。Array

对空白值进行操作时,管道返回空白值。


Array.prototype.slice()文档

arr .slice([开始[,结束]])

begin - 开始提取的从零开始的索引。

end - 从零开始的索引,在此之前结束提取。slice提取到但不包括 end

于 2019-08-25T20:09:09.767 回答
0

我知道带有第二个参数的角切片管不被排除在外。

你的这种说法是不正确的。Angular 有第二个参数SlicePipe。第一个参数是start,第二个(可选)参数是end。(来源:文档)。这是SlicePipe接受的内容

{{ value_expression | slice : start [ : end ] }}

所有行为都基于 JavaScript API Array.prototype.slice() 和 String.prototype.slice() 的预期行为。

当您在此处更改管道中的start/值时,您可以准确地看到会发生什么。end

如果您还想包含最后一个值,请不要包含end

<p>{{ [1,2,3,4,5,6] | slice: 0 }}</p>

如果不传递start值,则以 .slice开头0。考虑到这一点,我们可以重写上面的代码

<p>{{ [1,2,3,4,5,6] | slice }}</p>
于 2019-08-25T20:31:01.693 回答