2015-11-04 32 views
1

我使用lodash將項目插入數組(如果它不存在),並在存在時刪除它,類型爲「切換」。簡化「切換」數組項目的代碼

我的代碼如下所示:

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

if (_.includes(items, itemToToggle)) { 
    _.pull(items, itemToToggle) 
} 
else { 
    items.push(itemToToggle) 
} 

這似乎還不夠完善。 我可以簡化它,理想情況下,有像_.toggle(items, itemToToggle)

+0

如果您在Code Review StackExchange站點上發佈這個信息,您可能會收到更多回復:http://codereview.stackexchange.com/ – Thriggle

回答

5

另一種方式來做到這一點是使用lodash的XOR

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

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

return new_array // ['b', 'c'] 

如果它不存在,將添加該項目,並刪除它。

它通過比較兩個數組(items[itemToToggle])並返回兩個數組合併成的新數組來減少重複次數。

2

你的代碼對我來說似乎很好。唯一的事情,我能想到的是使用長度,看看是否已刪除項目,如果沒有,添加它:

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; 
}