Removing elements from JavaScript arrays

后端 未结 5 2063
别跟我提以往
别跟我提以往 2021-02-10 22:31

I have the following array setup, i,e:

var myArray = new Array();

Using this array, I am creating a breadcrumb menu dynamically as the user add

相关标签:
5条回答
  • 2021-02-10 22:40

    I like this implementation of Array.remove, it basically abstracts the use of the splice function:

    // Array Remove - By John Resig (MIT Licensed)
    Array.prototype.remove = function(from, to) {
      var rest = this.slice((to || from) + 1 || this.length);
      this.length = from < 0 ? this.length + from : from;
      return this.push.apply(this, rest);
    };
    

    Usage:

    // Remove the second item from the array
    array.remove(1);
    // Remove the second-to-last item from the array
    array.remove(-2);
    // Remove the second and third items from the array
    array.remove(1,2);
    // Remove the last and second-to-last items from the array
    array.remove(-2,-1);
    
    0 讨论(0)
  • 2021-02-10 22:46

    You do not need to write a function, you can use indexOf() and splice() these two functions.

    You can remove any positional element a element. For example: var name = ['james' , 'tommy' , 'Jimmy' , 'Holon']; var name = name.splice(name.indexOf('Jimmy') , 1);

    0 讨论(0)
  • 2021-02-10 22:49

    You could use myArray.push('MenuA'); so you don't specify direct numbers when adding elements.

    To remove an element I.E. 'MenuB':

    // another quick way to define an array
    myArray = ['MenuA', 'MenuB', 'MenuC', 'MenuD', 'MenuE']; 
    
    // remove an item by value:
    myArray.splice(myArray.indexOf('MenuB'),1);
    
    // push a new one on
    myArray.push('MenuZ');
    
    // myArray === ["MenuA", "MenuC", "MenuD", "MenuE", "MenuZ"]
    
    0 讨论(0)
  • 2021-02-10 22:51

    http://www.w3schools.com/jsref/jsref_splice.asp

    Splice should recalculate the correct indexes for future access.

    0 讨论(0)
  • Remove array element by position/element(Actual array modifies)

    1 - arr.splice(1, 1) -----> (index, no of elements)

    2 - arr.splice(arr.indexOf(5), 1) -----> (array.indexOf(InputValue), no of elements)

    let arr = [1,2,3,4,5];
    console.log(arr.splice(1,1));                // [2]
    console.log(arr.splice(arr.indexOf(5), 1));  // [5]
    console.log(arr);                            // [1, 3, 4]

    Remove array element by position/element(creates copy array)

    let arr2 = [10, 20, 30, 40]
    let result = arr2.filter(a=> a!==20);
    let result2 = arr2.filter(a=> a!==arr2[arr2.indexOf(30)])
    console.log(result)    // [10, 30, 40]
    console.log(result2)   // [10, 20, 40]

    0 讨论(0)
提交回复
热议问题