Home Reference Source

src/set.js

export default class Set {
    constructor(items=[],isEqual=(a,b)=> a==b)
    {
	this.items=items
	this.isEqual=isEqual
    }
    add(item)
    {
	for(let i=0;i<this.items.length;i++)
	{
	    if(this.isEqual(this.items[i],item))
	    {
		return true
	    }
	}
	this.items.push(item);
	return true
    }
    remove(item)
    {
	let index=-1;
	for(let i=0;i<this.items.length;i++)
	{
	    if(this.isEqual(this.items[i],item))
	    {
		index=i;
		break;
	    }
	}
	if(index>=0)
	{
	    if(index>0 && index<this.items.length-1)
	    {
		let array1=this.items.slice(index+1,this.items.length)
		let array2=this.items.slice(0,index)

		for(let i=0;i<array1.length;i++)
		{
		    array2.push(array1[i]);
		}
		this.items=array2;
		return true
	    }

	    if(index==0)
	    {

		this.items=this.items.slice(1,this.items.length)
		return true
	    }
	    if(index==this.items.length-1)
	    {
		this.items=this.items.slice(0,this.items.length-1)
		return true
	    }
	}
	return true
	    
    }
    contains(item)
    {
	for(let i=0;i<this.items.length;i++)
	{
	    if(this.isEqual(this.items[i],item))
	    {
		return true
	    }
	}
	return false;
    }
    getItems()
    {
	return this.items.slice();
    }

}