Deleting array elements in JavaScript - delete vs splice

后端 未结 27 4454
予麋鹿
予麋鹿 2020-11-21 05:31

What is the difference between using the delete operator on the array element as opposed to using the Array.splice method?

For example:

myArray = [\         


        
27条回答
  •  南旧
    南旧 (楼主)
    2020-11-21 06:13

    delete will delete the object property, but will not reindex the array or update its length. This makes it appears as if it is undefined:

    > myArray = ['a', 'b', 'c', 'd']
      ["a", "b", "c", "d"]
    > delete myArray[0]
      true
    > myArray[0]
      undefined
    

    Note that it is not in fact set to the value undefined, rather the property is removed from the array, making it appear undefined. The Chrome dev tools make this distinction clear by printing empty when logging the array.

    > myArray[0]
      undefined
    > myArray
      [empty, "b", "c", "d"]
    

    myArray.splice(start, deleteCount) actually removes the element, reindexes the array, and changes its length.

    > myArray = ['a', 'b', 'c', 'd']
      ["a", "b", "c", "d"]
    > myArray.splice(0, 2)
      ["a", "b"]
    > myArray
      ["c", "d"]
    

提交回复
热议问题