Heim  >  Artikel  >  Web-Frontend  >  Code War tägliche Praxis

Code War tägliche Praxis

巴扎黑
巴扎黑Original
2017-06-27 09:12:311490Durchsuche

Stellen Sie in Ihrer Freizeit eine Frage:

Die Bedeutung dieser Frage ist: Löschen Sie dieselben benachbarten Elemente und geben Sie ein neues Array zurück.

Die Array.filter-Methode ist hier am besten:

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;
    }
  })
}

Beachten Sie hier, dass filter das ursprüngliche Array nicht ändert. Es gibt lediglich ein neues Array zurück und hat auch eine Funktion: Löschen Sie die Werte, die false zurückgeben, und behalten Sie die Werte bei, die true zurückgeben.

Es gibt eine zweite Antwort:

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;
}

Dies besteht darin, ein weiteres leeres Array zu verwenden, um die qualifizierten Werte zu reproduzieren.

Nach dem Absenden habe ich im Bereich „Lösungen“ eine sehr intelligente Antwort gesehen:

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

Die Call-Methode wird hier verwendet, um iterierbar zu machen. Rufen Sie array.filter geschickt auf. Das Gleiche gilt für Iterables, die nicht wissen, ob es sich um Arrays oder Strings handelt. Es besteht keine Notwendigkeit, sich die Mühe zu machen, Strings für Operationen in Arrays umzuwandeln.

Dann nutzte er die Eigenschaften des Filterrückgabewerts, um jedes Element nacheinander mit dem vorherigen Element zu vergleichen. Wenn sie nicht gleich sind, gibt es true zurück und behält das aktuelle Element bei.

Diese Frage ist relativ einfach.

Noch eine einfache Frage:

Das ist sehr einfach, deshalb werde ich die Antwort direkt posten:

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

Der beste Weg, den Abschlussbereich anhand eines Beispiels darzustellen:

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

Das obige ist der detaillierte Inhalt vonCode War tägliche Praxis. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn