Maison > Article > interface Web > À propos des problèmes d'objet temporel et de récursion JS
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);
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)
É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()+'-'+ad+'-'+d2.getDate()) } getLastNDays(40);
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());
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)
}//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) //一个新的对象与原对象无关系É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) //一个新的数组与原数组无关系
Cet article en discute
function arrcopy(num){ var lala; if(num instanceof Array){ lala = []; } else{ lala={}; }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);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!