Сгладить заданный массив [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; } } }