有没有更优雅的方法从数组中删除元素?

时间:2017-12-17 03:03:05

标签: javascript

我现在从数组中删除元素的方法是

var indexToRemove = newSections.indexOf(newSections.find((section) => section.id === parseInt(sectionId)));
newSections.splice(indexToRemove, 1);

但是,我希望能够删除我的元素。

array.remove(element)

我怎样才能完成这样的事情?

3 个答案:

答案 0 :(得分:2)

没有API可以执行此类操作,但您可以使用(funcall f ...)执行类似操作。

Array.filter

在上面的示例中,let words = ["spray", "limit", "elite", "exuberant", "destruction", "present", "happy"]; words = words.filter(word => word != "spray"); 不会包含单词words

答案 1 :(得分:1)

如果您想要进行删除,可以使用var indexToRemove = newSections.reduce( (acc,section,index) => (acc === null && section.id === parseInt(sectionId) ? index : acc), null); if (indexToRemove !== null) newSections.splice(indexToRemove, 1); 做得更好:

find

所以你的数组只被解析一次。

否则我更希望得到$ python test.py –f import_dbs –c 1 None None $ python test.py -f import_dbs –c 1 import_dbs None $ python test.py -f import_dbs -c 1 import_dbs 1 $ echo "python test.py –f import_dbs –c 1" | od -c 0000000 p y t h o n t e s t . p y – 0000020 ** ** f i m p o r t _ d b s – 0000040 ** ** c 1 \n 0000046 $ echo "python test.py -f import_dbs -c 1" | od -c 0000000 p y t h o n t e s t . p y - 0000020 f i m p o r t _ d b s - c 0000040 1 \n 0000042

的答案

答案 2 :(得分:1)

假设以下

sections = [
    {id: 1, name: 'section 1'},
    {id: 2, name: 'section 2'},
    {id: 3, name: 'section 3'}
]

定义简单功能

function removeSection(sections, sectionIdToRemove) {
  return sections.filter(s=>s.id != parseInt(sectionIdToRemove)
}

使用

removeSection(sections, 1) // removes the second section

不建议将此.remove方法添加到全局Array对象。