【发布时间】:2020-11-20 15:35:44
【问题描述】:
我正在尝试删除数组的前两个、三个、四个索引。这是我的代码:
returnFilteredRoles() {
if (this.props.user.role_id == 1 || this.props.user.role_id == 2) {
return this.state.data;
} else if (this.props.user.role_id == 3) {
return this.state.data.splice(0, 2);
} else if (this.props.user.role_id == 4) {
return this.state.data.splice(0, 3);
} else if (this.props.user.role_id == 5) {
return this.state.data.splice(0, 4);
}
}
例如:data = [1,2,3,4,5];
if role_id == 3,它应该返回[3,4,5]。相反,它返回[1,2]。不知道为什么。
我尝试将状态存储到一个变量中,然后拼接该变量并返回它。但它给出了相同的结果。
【问题讨论】:
-
切片的参数是start and end index。如果起始索引为 0,您将获得从第一项开始的数组的一部分。你所有的切片都从零开始,所以你从数组的开头得到一个块。
-
我在教程中读到,第一个参数是起始索引,第二个是要删除的项目数。感谢您的澄清。
-
好的,但不知何故 splice 返回的结果与我想要的相反。可能是因为它是一个可变方法,直接影响状态,但是将它存储在变量中也不起作用。
-
splice 修改数组并返回删除的项。 slice 返回一个包含所选子集的新数组。在您进行编辑之前,您调用的是 slice。
标签: javascript arrays reactjs slice splice