Remove element from array, using slice

前端 未结 7 1423
野性不改
野性不改 2021-01-04 02:26

I am trying to remove a element from my array using slice, but i can\'t get it to work, look at this piece of code.

    console.log(this.activeEffects); // P         


        
相关标签:
7条回答
  • 2021-01-04 02:44

    Look at here : http://www.w3schools.com/jsref/jsref_slice_array.asp

    You can see that the slice method select object et throw them into a new array object ^^ So you can't delete an object like this, may be you can try a thing like this :

    var a = ["a","b","c"]; (pseudo code)
    /* I wan't to remove the "b" object */
    
    var result = a.slice(0,1)+a.slice(2,1); /* If you considers that "+" is a concatenation operator, i don't remember if it is true... */
    
    0 讨论(0)
  • 2021-01-04 02:54

    I believe you're looking for splice. From W3 Schools:

    The splice() method adds/removes items to/from an array, and returns the removed item(s).

    Take a look at the example on that page; the use case there is similar to what you want to achieve.

    EDIT: Alternative link to MDN, as suggested by Nicosunshine; much more information about the command there.

    0 讨论(0)
  • 2021-01-04 02:56

    .slice does not mutate the array, you could use .splice() to remove the item at index i in the array:

    this.activeEffects.splice(i, 1)
    
    0 讨论(0)
  • 2021-01-04 02:59

    Array.prototype.slice()...

    does not alter the original array, but returns a new "one level deep" copy that contains copies of the elements sliced from the original array. Elements of the original array are copied into the new array as follows:

    Whereas Array.prototype.splice()...

    Changes the content of an array, adding new elements while removing old elements.

    This example should illustrate the difference.

    // sample array
    var list = ["a","b","c","d"];
    // slice returns a new array
    console.log("copied items: %o", list.slice(2));
    // but leaves list itself unchanged
    console.log("list: %o", list);
    // splice modifies the array and returns a list of the removed items
    console.log("removed items: %o", list.splice(2));
    // list has changed
    console.log("list: %o", list);

    0 讨论(0)
  • 2021-01-04 03:02
    a.slice(0, index).concat(a.slice(index + 1))
    
    0 讨论(0)
  • 2021-01-04 03:05
    function removeItemWithSlice(index) {
      return [...items.slice(0, index), ...items.slice(index + 1)]
    }
    

    Slice will create a new array. We create two arrays: from beggining to index and from index+1 to end. Then we apply the spread operator (...) to take the items of those arrays and create a new single array containing all the items we care. I will paste an equivalent way if you don't like the one liner:

    function removeItemWithSlice(index) {
      const firstArr = items.slice(0, index);
      const secondArr = items.slice(index + 1);
      return [...firstArr , ...secondArr]
    }
    
    0 讨论(0)
提交回复
热议问题