Maison > interface Web > js tutoriel > À propos des problèmes d'objet temporel et de récursion JS

À propos des problèmes d'objet temporel et de récursion JS

jacklove
Libérer: 2018-05-21 11:30:24
original
1421 Les gens l'ont consulté

Les objets temporels JS et la récursivité sont souvent rencontrés dans l'apprentissage, et cet article les expliquera.

Quels sont les types de base ? Quels sont les types complexes ? Quelles sont les caractéristiques ?
De manière générale, les types de base de JS sont principalement divisés en 5 types, qui font référence à des segments de données simples stockés dans la mémoire de la pile

Nombre : nombre

Valeurs booléennes : vrai, faux ;

Chaîne : chaîne

null : pointeur de contrôle

sous-fin : il y a un pointeur mais aucune valeur attribuée

Les types complexes n'ont qu'un objet : y compris les tableaux, objets, fonctions, Regular fait référence à l'objet stocké dans la mémoire du tas. Ce qui est enregistré dans la variable n'est en fait qu'un pointeur (coordonnée). Ce pointeur exécute un autre emplacement dans la mémoire et l'objet est enregistré à cet emplacement.

La sortie du code suivant ? Pourquoi ?

var obj1 = {a:1, b:2};var obj2 = {a:1, b:2};console.log (obj1 == obj2); //Déterminez si obj1 est égal à obj2console.log(obj1 = obj2); //Attribuez obj2 à obj1console.log(obj1 == obj2); //Déterminez à nouveau si obj1 est égal à obj2); des caractéristiques des types complexes. Les deux objets sont à des positions différentes, le résultat est donc : falseObject {a: 1, b: 2}true

Code

Écrire une fonction. getIntv pour obtenir l'heure à partir de l'heure actuelle pour spécifier l'intervalle entre les dates

function getIntv(haha){
  a= Date.now();
  b= Date.parse(haha);
  c= b-a;
  d= Math.floor(c/(1000*60*60*24));
  e= Math.floor((c-d*1000*60*60*24)/(1000*60*60));
  f= Math.floor((c-d*1000*60*60*24-e*1000*60*60)/(1000*60));
  g= Math.floor((c-d*1000*60*60*24-e*1000*60*60-f*1000*60)/1000);  return ("距除夕还有"+d+"天"+e+"小时"+f+"分钟"+g+"秒")
}var str = getIntv("2017-01-27");console.log(str);
Copier après la connexion

Changer la date numérique en date chinoise

function getChsDate(lala){
  num=['零','一','二','三','四','五','六','七','八','九','十','十一','十二','十三','十四','十五','十六','十七','十八','十九','二十','二十一','二十二','二十三','二十四','二十五','二十六','二十七','二十八','二十九','三十','三十一']  var damo = lala.split('-')     
  var b = damo[0].split('')    
 for( var e =0 ;e< damo.length; e++) { 
  for(var i = 0 ;i< b.length ; i++) {  
    for(var f = 0 ;f< num.length ;f++) {   
      if( damo[e] == f.toString() ) {
        damo[e] = num[f]
      }      if( b[i] == f.toString() ) {
        b[i] = num[f]
      }
    }
  }
 }  
  return ( b.join("")+"年"+damo[1]+"月"+damo[2]+"日" )
}var str = getChsDate("2015-11-31")console.log(str)
Copier après la connexion

Écrire une fonction pour obtenir la date il y a n jours

function getLastNDays(lala) {  var damo = new Date().getTime()-(lala*1000*60*60*24);  var d2 = new Date(damo)  var ad =(d2.getMonth()+1)  console.log(d2.getFullYear()+&#39;-&#39;+ad+&#39;-&#39;+d2.getDate())   
}
 getLastNDays(40);
Copier après la connexion

L'amélioration est la suivante Le code permet d'obtenir le temps d'exécution, tel que :

var Runtime = (function(){    var a,b,c;    return {        start: function(){
             a = Date.now();   //获取现在的时间
             console.log(a);
        },        end: function(){
             b = Date.now();    //获取执行后的时间
             console.log(b);
        },        get: function(){ 
             c = b - a;              //两者相减得出执行代码的时间。            
             return (c+"毫秒");        //单位为毫秒
        }
    };
}());
Runtime.start();             
for(var i = 0; i<60000 ;i++ ){         
                                   //这里计算i循环60000次所需要的时间}
Runtime.end();console.log(Runtime.get());
Copier après la connexion

Il y a 200 marches dans l'escalier à chaque fois que vous en faites 1 ou. 2 niveaux, combien de chemins y a-t-il au total de bas en haut ? Utiliser du code (récursion) pour implémenter

function fn(sum){  if(sum===1){    return 1;
  }  if(sum===2){    return 2;
  }  return fn(sum-1)+fn(sum-2)
Copier après la connexion

}//La méthode de marche des escaliers est équivalente à (après avoir fait un pas + la méthode de marche suivante) + (après avoir fait deux pas + la méthode de marche suivante ) //Faites une étape Ou faites deux étapes pour conditionner console.log(fn(200));                                                                                                                  en utilisant   en utilisant                en utilisant ' ' ' pour ' ‐                                                         , la valeur peut être une chaîne, un nombre, une valeur booléenne ou tout autre élément dans l'objet json

Écrivez une méthode de copie approfondie du tableau. La valeur dans le tableau peut être une chaîne, un nombre, un booléen ou n'importe quel élément du tableau

<🎜. >
var obj={  sex:18,  vala:"hello",  arr:{    name:"damo"
  }
};function objcopy(obj){  var newobj={};  for(var i in obj){    //遍历对象obj
    if(typeof obj[i]=== "object"){       //如果对象的值为对象
      newobj[i] = objcopy(obj[i])    //将对象赋值为新对象
    }else{
      newobj[i]=obj[i];
    }
  }  return newobj;
}var newobj= objcopy(obj);console.log(newobj)                 //一个新的对象与原对象无关系
Copier après la connexion
Écrivez une méthode de copie approfondie. L'objet copié et les valeurs imbriquées internes peuvent être des chaînes, des nombres, des booléens, des tableaux et tout élément des objets json

var arr=[18, "hello", [2,3,5,6,9],true,];function objcopy(arr){  var newarr=[];  for(var i in arr){    //遍历数组arr
    if( arr[i] instanceof Array){    //条件:如果对象的值为数组
      newarr[i] = objcopy(arr[i])    //将数组内容赋值为新数组
    }else{
      newarr[i]=arr[i];
    }
  }  return newarr;
}var newarr= objcopy(arr);console.log(newarr)                 //一个新的数组与原数组无关系
Copier après la connexion

Cet article en discute

function   arrcopy(num){   var lala;  if(num instanceof Array){
    lala = [];
  } else{
    lala={};
  }
Copier après la connexion
Recommandations associées :
 for(var key in num){    if(num[key] instanceof Array){
       lala[key] = arrcopy(num[key]);
    }    else{
       lala[key] = num[key];
    }
  }  return lala;
}var lala= arrcopy(arr);
Copier après la connexion

Quelle est la différence entre innerText et innerHTML des objets dom ?

Quelques questions de base sur JS

Comment modulariser require.js avec js front-end

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal