(Estoy usando Group for Set como nombre)
si grupoA = [1, 2] y grupoB = [2, 3]
groupC = groupA.difference(groupB); //-> groupC = [1] groupC = groupB.difference(groupA); //-> groupC = [3]
El primero funciona, pero el segundo no. En lugar de groupC que contiene 3, no contiene nada. Estoy bastante seguro de que todas las otras funciones funcionan bien. Soy nuevo en JS y no estoy seguro de lo que estoy haciendo mal.
class Group { constructor() { this.arr = new Array(); } add(elem) { if(this.has(elem) == false) { this.arr.push(elem); } } delete(elem) { for(let i=0; i<this.arr.length; i++) { if(this.arr[i] == elem) { this.arr.splice(i); } } } has(elemA) { for(let elemB of this.arr) { if(elemA == elemB) { return true; } } return false; } difference(grp) { var newGroup = new Group(); for(let i=0; i<this.arr.length; i++) { newGroup.add(this.arr[i]); } for(let i=0; i<grp.arr.length; i++) { newGroup.delete(grp.arr[i]); } return newGroup; } } let a = new Group(); let b = new Group(); a.add(1); a.add(2); b.add(2); b.add(3); let c = b.difference(a); console.log(c.has(1)); //expected false, actually false console.log(c.has(2)); //expected false, actually false console.log(c.has(3)); //expected true, actually false