简化"切换"数组项的代码

Ser*_*rov 5 javascript lodash

我使用lodash将一个项目插入到数组中(如果它不存在),如果它存在则删除它,类似"切换".

我的代码看起来像这样:

var items = ['a', 'b', 'c'];
var itemToToggle = 'a';

if (_.includes(items, itemToToggle)) {
    _.pull(items, itemToToggle)
}
else {
    items.push(itemToToggle)
}
Run Code Online (Sandbox Code Playgroud)

这似乎不够完美.我可以简化它,理想情况下,有类似的东西_.toggle(items, itemToToggle)吗?

S.K*_*ers 20

另一种方法是使用lodash的xor

var items = ['a', 'b', 'c'];
var itemToToggle = 'a';

new_array = _.xor(items, [itemToToggle])

return new_array // ['b', 'c']
Run Code Online (Sandbox Code Playgroud)

如果项目不存在,将添加该项目,如果不存在则删除.

它通过比较两个数组(items[itemToToggle])并返回一个新数组来实现这一点,该数组是两个数组的合并,减去重复数组.