JavaScript的数组中默认不支持删除指定元素的操作,如

1
2
let book_id = [1,2,3,4]
book_id.delete(4) //错误,JS数组没有该方法

因此,解决的办法有

  • 使用集合Set
    ES6中新加入了集合类型Set(),因为集合本身支持add(),delete(),remove(),forEach()等操作,因此可以直接将Array()转化为Set()
    1
    2
    3
    let book_id = new Set([1,2,3,4])
    book_id.delete(4)
    console.log(book_id) //Set { 1, 2, 3 }

但要注意到,Set()本身的限制

Set是一种无重复值的有序列表,允许对它包含的数据进行快速访问,从而增加了一个追踪离散值的更有效方式

因此,如果本身要操作的数据不符合Set()的要求,则要用到ES5原生方法

  • 使用indexOf()
    其实是通过indexOf()找到要删除元素在数组中的索引,然后用splice()删除
    1
    2
    3
    4
    let book_name = ['1984','动物庄园','乌合之众']
    let i = book_name.indexOf('动物庄园')
    book_name.splice(i,1)
    console.log(book_name) //[ '1984', '乌合之众' ]

搞定!