JSFiddle - React, Tailwind, and code Playground
JavaScript
function arrayToList(array)
{
var list = {};
var lastRest = list;
array.forEach(function(elem)
{
lastRest.value = elem;
lastRest.rest = {};
lastRest = lastRest.rest;
});
lastRest.rest = null;
return list;
}
function listToArray(list, array)
{
array = array || [];
if(list.rest != null)
{
array.push(list.value);
list = list.rest;
return listToArray(list, array);
}
else
{
return array;
}
}
function prepend(elem, list)
{
return {value: elem, rest: list};
}
function nth(list, index, current)
{
current = current || 0;
if(index == current)
{
return list.value;
}
else
{
if(list != null)
{
return nth(list.rest, index, current + 1);
}
else
{
return undefined;
}
}
}
console.clear();
console.log(arrayToList([10, 20]));
console.log(listToArray(arrayToList([10, 20, 30])));
console.log(prepend(10, prepend(20, null)));
console.log(nth(arrayToList([10, 20, 30]), 1));