Javascript 简化代码,即;切换";数组项

Javascript 简化代码,即;切换";数组项,javascript,lodash,Javascript,Lodash,我使用lodash在数组中插入一个项目(如果它不在数组中),如果它存在,则删除它,类似于“切换” 我的代码如下所示: var items = ['a', 'b', 'c']; var itemToToggle = 'a'; if (_.includes(items, itemToToggle)) { _.pull(items, itemToToggle) } else { items.push(itemToToggle) } 这似乎不够完美。 理想情况下,我是否可以将其简化为

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

我的代码如下所示:

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

if (_.includes(items, itemToToggle)) {
    _.pull(items, itemToToggle)
}
else {
    items.push(itemToToggle)
}
这似乎不够完美。
理想情况下,我是否可以将其简化为类似于
\uu.toggle(items,itemtotogle)

您的代码对我来说似乎很好。我能想到的唯一一件事是使用长度来查看项目是否已删除,如果未删除,则添加:

function toggleValueInArr(arr, value) {
    var originalLength = arr.length; // cache the original length

    _.pull(arr, value).length === originalLength && arr.push(value); // check if the length is the same as the original - ie no item was not removed. If so, push it.

    return arr;
}

另一种方法是使用lodash的xor

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

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

return new_array // ['b', 'c']
如果项目不存在,则添加该项目,如果存在则删除该项目


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

如果您在code Review StackExchange站点上发布此消息,您可能会得到更多响应: