Exp-2

brackets string valid

function x(val){
  let a = val.split("")
  var stick = []
  a.forEach((str,i)=>{ 
      let char = stick[stick.length-1]  
     // console.log(char)
      if(str == '(' || str == '[' || str == '{'){
           stick.push(str)
      } else if((char == '(' && a[i] === ')') || (char === '[' && a[i] === ']') || (char == '{' && a[i] === '}')){      
          stick.pop()            
      } 
  })
 console.log(stick)
}
x('[()()[]{}]')
var objA = {name: 'abc'};
var objB = Object.assign({}, objA);
objB.name = 'xyz';
objA.name // abc


var objA = {name: 'abc'};
var objB = objA;
objB.name = 'xyz';
objA.name // xyz
var obj1 = {
  valueOfThis: function(){
    return this;
  }
}
var obj2 = {
  valueOfThis: ()=>{
    return this;
  }
}
obj1.valueOfThis(); // Window {0: Window, window: Window, self: Window, document: document, name: '', location: Location, …}
obj2.valueOfThis(); //{valueOfThis: ƒ}
var a = "aaa"
var x = ()=>{
  var self = this
  console.log(this); // Window {0: Window, window: Window, self: Window, document: document, name: '', location: Location, …}
 console.log(this.a); // aaa
}        
x();
var x = [{name:'bad',age:'22'},{name:'zajay', age:'1'},{name:'ajay', age:'2'},{name:'zz',age:'5'}]
x.reduce((a,s)=>{
var b;
 if(a.age){
   b = parseInt(a.age) + parseInt(s.age)
 } else{
  b= a + parseInt(s.age)
 }
return b;
})
//Array object sorting by object kee
x.sort(function(a, b) {
    return a.name > b.name ? 1 : -1;
});
var x = [{name:'bad',age:'22'},{name:'zajay', age:'1'},{name:'ajay', age:'2'},{name:'zz',age:'5'}]
var hoistedVariable = 3;
console.log(hoistedVariable); //3
var hoistedVariable;
// without promise all call promise
const p1 = new Promise((resolve, reject) => {
    resolve("1")
})
const p2 = new Promise((resolve, reject) => {
    resolve("2")
})
const p3 = new Promise((resolve, reject) => {
    resolve("3")
})
p1.then((res)=>{   
  p2.then((a)=>{
    p3.then((a2)=>{console.log(a2),console.log(a, res)})
  })
})
Promise.all([promise1, promise2, promise3]).then((values) => {
  console.log(values); // [1,2,3]
});
// Async await with promise
var myfn = function(){
      return new Promise(function(resolve, reject) {
        const message = `Hi, How are you!`;
        setTimeout(function()  { resolve(message) }, 3000);
       
      });
   // return setTimeout(function()  { console.log("Jacob"); }, 3000); 
}

async function printString(){
   console.log("Tom"); 
   await myfn().then((e)=>{console.log(e)});
    console.log("Mark")
}

printString();
async function printString(){
   console.log("Tom"); 
   const p1 =  new Promise((res,rej)=>{
       return res('dddd')
   })
   await p1.then((a)=>{console.log(a)})
    console.log("Mark")
}

printString(); // Tom, dddd, Mark

......................................
 function printString(){
   console.log("Tom"); 
   const p1 =  new Promise((res,rej)=>{
       return res('dddd')
   })
    p1.then((a)=>{console.log(a)})
    console.log("Mark")
}

printString(); // Tom Mark dddd
for(let i=0; i<=15; i++){
    let x = '' 
    for(let j=0; j<i; j++){
        x+='*'
    }
    console.log(x)
}
function randomNum() {
  let output = [];
  for (let i = 0; i < 10; i++) {
    output.push(Math.floor((Math.random() * 10)+1));
  }
  let s =output.sort()
  let d = output[output.length-2]
  return `${output}==${d}`
}
randomNum();
var x = [{name:'bad',age:'22'},{name:'zajay', age:'1'},{name:'ajay', age:'2'},{name:'zz',age:'5'}]
var output = [];
x.forEach((data,i)=>{
   if((x.length-1) == i){
     // console.log(data) 
     output.unshift(data)
   } else{
       output.push(data)
   }
  
})
 console.log(output)