Maison  >  Article  >  interface Web  >  pratique quotidienne de la guerre des codes

pratique quotidienne de la guerre des codes

巴扎黑
巴扎黑original
2017-06-27 09:12:311529parcourir

Posez une question pendant votre temps libre :

La signification de cette question est : supprimez les mêmes éléments adjacents et renvoyez un nouveau tableau.

La méthode Array.filter est la meilleure ici. Ma réponse est la suivante :

var uniqueInOrder=function(iterable){  var arr = typeof(iterable) === 'string' ? iterable.split('') : iterable;  var pre = '';  return arr.filter(function(i){if(i === pre){      return false;
    }else{
      pre = i;      return true;
    }
  })
}

Notez ici que filter ne modifiera pas le tableau d'origine. , il renvoie simplement un nouveau tableau, et a également une fonction : supprimer les valeurs qui renvoient faux et conserver les valeurs qui renvoient vrai.

Il existe une deuxième réponse :

var uniqueInOrder=function(iterable){  var arr = typeof(iterable) === 'string' ? iterable.split('') : iterable;  var pre = '',result = [];
  arr.map(function(i){if(i !== pre){
      result.push(pre = i);
    }
  });  return result;
}

Il s'agit d'utiliser un autre tableau vide pour reproduire les valeurs qualifiées.

Après la soumission, j'ai vu une réponse très intelligente dans la zone Solutions :

var uniqueInOrder = function (iterable){  return [].filter.call(iterable, (function (a, i) { return iterable[i - 1] !== a }));
}

La méthode d'appel est utilisée ici pour rendre itérable intelligemment appeler array.filter, ce qui est très utile pour les itérables qui ne savent pas s'il s'agit de tableaux ou de chaînes. Il n'est pas nécessaire de se donner la peine de convertir des chaînes en tableaux pour les opérations.

Ensuite, il a profité des caractéristiques de la valeur de retour du filtre pour comparer tour à tour chaque élément avec l'élément précédent. S'ils ne sont pas égaux, il renvoie vrai et conserve l'élément actuel.

Cette question est relativement simple.

Autre question simple :

C'est très simple, je posterai donc la réponse directement :

function average(scores) {  var result = 0;
  scores.map(i=>result+=i);  return Math.round(result/scores.length);
}

La meilleure façon de montrer la zone de conclusion par exemple :

function average(scores) {  return Math.round(scores.reduce((x, y) => x+y, 0) / scores.length)
}

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!

Déclaration:
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