react splice returns 对面我删了什么?

React splice returns opposite of what I delete?

我正在尝试删除数组的前两个、三个、四个索引。这是我的代码:

 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,应该return [3,4,5]。取而代之的是 returns [1,2]。不知道为什么。

我尝试将状态存储到一个变量中并拼接该变量,然后 returning 那个。但它给出了相同的结果。

slice() doesn't mutate the array it returns a new array with the selected elements. However, splice() 改变数组 因此,为了让您的示例使用 slice 来工作,您需要做

data = [1,2,3,4,5]; 
var slicedata=data.slice(2,)
console.log("sliced array", slicedata)
console.log("original array", data)

使用splice

    data = [1,2,3,4,5]; 
    var slicedata=data.splice(2,4)
    console.log("spliced array", slicedata)
    console.log("original array", data) // notice the difference

问题是,切片 returns 您切出的元素:

var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
var citrus = fruits.slice(1, 3);
console.log(citrus); // ["Orange", "Lemon"]

来源:https://www.w3schools.com/jsref/jsref_slice_array.asp