LinkCreator

by evgkch

Babel + JSX

class Operator {

	set next(next) {
  	if (!!next)
    	this._next.push(next);    
  }
  
  get next() {
  	return this._next;
  }
  
  set prev(prev) {
  	if (!!prev)
    	this._prev.push(prev);
  }
  
  get prev() {
  	return this._prev;
  }
  
	constructor({ next, prev }) {
  	this._next = [];
    this._prev = [];    
  	this.next = next;
    this.prev = prev;    
  }
}

class LinkedNode extends Operator {	

  static create(prevNode, nextNode) {
     
  }
  
	constructor({ node, prev, next }) {
  	super({ prev, next })
    this.node = node;    
  }
}

class LinkCreator {
	create(prev, next) {
  	if (typeof next == 'object')
    {
      if (Array.isArray(next))
      	return nextNode.map(node => {
        	return LinkedNode.create(nextNode, node);
        });
      else
      {
      	const node = new LinkedNode(nextNode);
        if (Array.isArray(prevNode))
        	prevNode.forEach(prevNode => prevNode.next = node);
        else
        	prevNode.next = node;
        return node;
      }              	
    }
  }
}

class LinkedList extends Operator {
	
  static create() {
  	
  }
  
  constructor() {
  	
  }
}

function create(data) {
	return data.map((item, i) => {
  	return Node.create(item, data[i + 1])
  })
}

const list = [{},{},{},{}];

console.log(create(list))