Сгладить заданный массив [2,7,3,1,[6,4,[11,12,13,[14,15]]],9]

С закрытием:

function flattenArray(){
    let result=[];
    // take the array as input   
    const loopOverItems = function(input){
        // call parseItem for each item in array         
        input.forEach(parseItem);
        return result;
    }
    function parseItem(item){
        // if the item is array then loopOver it recursively
        if(Array.isArray(item)){
            loopOverItems(item);
        }
        else{
            // else add it result array. Note this result is 
            // defined outside of the function.
            result.push(item);
        }
    }
    //This is part of closure implementation
    return loopOverItems;
 }
let numbers=[2,7,3,1,[6,4,[7,8]],9];
let flatten = flattenArray();
let result=flatten(numbers);
console.log(result);

С редуктором

function flattenArray(){
    let numbers=[2,7,3,1,[6,4,[11,12,13,[14,15]]],9];
    let result=numbers.reduce(arrayReducer);
    console.log('result-->',result);
}
function arrayReducer(agr_val, item){
    if(Array.isArray(item)){
        return [].concat(agr_val).concat(item.reduce(arrayReducer));
    }
    else{
        return [].concat(agr_val).concat(item);
    }
}

Первое уникальное письмо.

function firstUnique(){
    let input="foobar";
    let object={};
    for(ch in input){
        if(object[input[ch]]){
            object[input[ch]] = object[input[ch]] +1;
        }
        else{
            object[input[ch]] =1;
        }
    }
    for(attr in object){
        if(object[attr]===1){
            console.log('Found',attr);
            break;
        }
    }
}

Проверка скобок

function parenthesescheck(){
    let opns="{[(",closes="}])",all=opns+closes;
    let input="{[()(){()}]}";
    let stack=[];
    let si=0;
    let broken_seq=false;
    for(let i in input){
let e=exists(input[i],opns,closes);
        if(e==='o'){
          stack.push(input[i]);
          si++;
        }else if(e==='c'){
          if(getOpposite(stack[si-1],opns,closes)===input[i]){
              stack.pop();
              si--;
          }
          else{
              broken_seq = true;
              break;
          }
        }else if(e==='n'){
            console.log('illegal cahr found');
            break;
        }
    }
    if(!broken_seq && stack.length===0){
        console.log('its good');
    }else if(broken_seq){
        console.log('it broke');
    }
}
function getOpposite(char,opns,closes){
    let indx=opns.indexOf(char);
    if(indx>=0){
        return closes[indx];
    }
    else{
        console.log('no char found');
    }
}
function exists(chr,opns,closes){
    if(_exists(opns,chr)){
        return 'o';
    }
    if(_exists(closes,chr)){
        return 'c';
    }
    return 'n';
}
function _exists(array,chr){
    for(let i in array){
        if(array[i]===chr)
        {
            return true;
        }
    }
}