Cette fois, je vais vous apporter l'application d'appel et postuler en javascript Quelles sont les précautions pour l'application d'appel et postuler en javascript. Ce qui suit est un cas pratique. . Jetons un coup d'oeil.
Trouver les valeurs maximales et minimales du tableau
Définir un tableau :
var ary = [23, 34, 24, 12, 35, 36, 14, 25];
Méthode de tri puis de valeur
Donnez d'abord Le tableau est trié (petit -> grand), le premier et le dernier sont les valeurs minimales et maximales que nous voulons.
var ary = [23, 34, 24, 12, 35, 36, 14, 25]; ary.sort(function (a, b) { return a - b; });var min = ary[0];var max = ary[ary.length - 1]; console.log(min, max);1234567
Méthode d'hypothèse
Supposons que la première valeur du tableau actuel est la valeur maximale, puis comparez cette valeur avec les éléments suivants un par un si l'une de ces dernières valeurs. est meilleur que la valeur supposée Il faut encore la taper, indiquant que l'hypothèse est fausse, nous remplaçons la valeur supposée...
var max = ary[0], min = ary[0];for (var i = 1; i < ary.length; i++) { var cur = ary[i]; cur > max ? max = cur : null; cur < min ? min = cur : null; } console.log(min, max);1234567
La méthode max/min en Math est implémentée (via appliquer )
Utilisez Math directement. min
var min = Math.min(ary); console.log(min); // NaN console.log(Math.min(23, 34, 24, 12, 35, 36, 14, 25));
Lorsque vous utilisez Math.min directement, vous devez transmettre la pile de nombres à comparer un par un, afin d'obtenir le résultat final. démérite Il n'est pas possible de mettre un tableau ary à la fois.
Essayez : utilisez eval
var max = eval(“Math.max(” + ary.toString() + “)”); console.log(max); var min = eval(“Math.min(” + ary.toString() + “)”); console.log(min); “Math.max(” + ary.toString() + “)” –> “Math.max(23,34,24,12,35,36,14,25)”
Ne vous inquiétez de rien d'autre d'abord, changez d'abord le dernier code que nous voulons exécuter en String, et puis la valeur de chaque élément du tableau est fusionnée séparément dans cette chaîne.
eval : Convertir une chaîne en une expression JavaScript pour exécution
Par exemple : eval(“12+23+34+45”) // 114
Appel via apply max/min en Math
var max = Math.max.apply(null, ary); var min = Math.min.apply(null, ary); console.log(min, max);
En mode non strict, lorsque le premier paramètre à appliquer est nul, celui-ci en max/min sera pointé vers window, puis le paramètre de ary sera passé à maximum/min.
Calculez la moyenne
Maintenant, simulez une scène et organisez une certaine compétition. Après que les juges ont noté, ils doivent supprimer le score le plus élevé et le score le plus bas, ainsi que la moyenne des. les scores restants sont pour le score final.
Peut-être que de nombreux étudiants penseront à écrire une méthode pour recevoir tous les scores, puis utiliseront les arguments d'attribut intégrés de la fonction pour trier les arguments en appelant la méthode de tri, et puis..., mais il convient de noter que les arguments ne sont pas Un véritable objet tableau n'est qu'une collection de pseudo-tableaux, donc appeler directement la méthode de tri avec des arguments signalera une erreur :
arguments.sort(); // Uncaught TypeError: arguments.sort is not a function
Donc à ce moment , pouvez-vous d'abord convertir les arguments en un véritable tableau ? J'ai découvert qu'il y avait une étape dans la méthode avgFn que nous avons implémentée. Les arguments sont clonés et générés dans un tableau. Si vous êtes familier avec la méthode slice des tableaux, vous pouvez savoir que lorsqu'aucun paramètre n'est passé à la méthode slice, le tableau actuel est cloné, ce qui peut être simulé comme :
function avgFn() { // 1、将类数组转换为数组:把arguments克隆一份一模一样的数组出来 var ary = []; for (var i = 0; i < arguments.length; i++) { ary[ary.length] = arguments[i]; } // 2、给数组排序,去掉开头和结尾,剩下的求平均数 ary.sort(function (a, b) { return a - b; }); ary.shift(); ary.pop(); return (eval(ary.join('+')) / ary.length).toFixed(2); }var res = avgFn(9.8, 9.7, 10, 9.9, 9.0, 9.8, 3.0); console.log(res);1234567891011121314151617
function mySlice () { // this->当前要操作的这个数组ary var ary = []; for (var i = 0; i < this.length; i++) { ary[ary.length] = this[i]; } return ary; };var ary = [12, 23, 34];var newAry = mySlice(ary); console.log(newAry);1234567891011
function avgFn() { // 1、将类数组转换为数组:把arguments克隆一份一模一样的数组出来 // var ary = Array.prototype.slice.call(arguments); var ary = [].slice.call(arguments); // 2、给数组排序,去掉开头和结尾,剩下的求平均数....123 }
Convertir un objet de type tableau en tableau
function avgFn() { Array.prototype.sort.call(arguments , function (a, b) { return a - b; }); [].shift.call(arguments); [].pop.call(arguments); return (eval([].join.call(arguments, '+')) / arguments.length).toFixed(2); }var res = avgFn(9.8, 9.7, 10, 9.9, 9.0, 9.8, 3.0); console.log(res);123456789101112
etc. L'objet de type tableau obtenu par la méthode peut-il également être converti en objet tableau à l'aide de la méthode slice ?
var oLis = document.getElementsByTagName('div'); var ary = Array.prototype.slice.call(oLis); Il peut en effet être utilisé de cette manière sous le navigateur, mais ce sera un drame sous IE6~8, et une erreur sera rapportée :
SCRIPT5014 : Array.prototype.slice : 'this' is not a Objet JavaScript (rapport d'erreur) Ensuite sous IE6~8, vous ne pouvez les ajouter au tableau qu'un par un via une boucle :
Remarque : Il n'y a pas de problème de compatibilité avec la méthode d'emprunt de tableaux pour les arguments.
En fonction de la différence entre IE6~8 et les navigateurs standards, extrayez la classe d'outils pour convertir des objets de type tableau en tableaux :
for (var i = 0; i < oLis.length; i++) { ary[ary.length] = oLis[i]; }
Le navigateur est utilisé dans cet outil méthode Capture des informations sur les exceptions, présentons-les donc ici.
Lorsque nous générons une variable non définie, une erreur sera signalée : Uncaught ReferenceError : num n'est pas défini. En JavaScript, cette ligne signalera une erreur, et ce qui suit. le code ne sera plus exécuté.
function listToArray(likeAry) { var ary = []; try { ary = Array.prototype.slice.call(likeAry); } catch (e) { for (var i = 0; i < likeAry.length; i++) { ary[ary.length] = likeAry[i]; } } return ary; }1234567891011
Donc, le format d'utilisation de try...catch est (très similaire à Java) :
console.log(num); } catch (e) { // 形参必须要写,我们一般起名为e console.log(e.message); // –> num is not defined 可以收集当前代码报错的原因 } console.log(‘ok’);
Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !
try { // } catch (e) { // 如果代码报错执行catch中的代码 } finally { // 一般不用:不管try中的代码是否报错,都要执行finally中的代码 }
try { console.log(num); } catch (e) { // console.log(e.message); // --> 可以得到错误信息,把其进行统计 // 手动抛出一条错误信息,终止代码执行 throw new Error('当前网络繁忙,请稍后再试'); // new ReferenceError --> 引用错误 // new TypeError --> 类型错误 // new RangeError --> 范围错误 }console.log('ok');
Explication détaillée de l'appel en javascript
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!