2016-05-21 8 views
2

Ich möchte wissen, ob es eine native JavaScript-Code, der die gleiche Sache wie dies tut:Zählen Sie die Anzahl, wie oft ein gleichen Wert in einem JavaScript-Array erscheint

function f(array,value){ 
    var n = 0; 
    for(i = 0; i < array.length; i++){ 
     if(array[i] == value){n++} 
    } 
    return n; 
} 
+3

In Meine ehrliche Meinung, die for-Schleife, die Sie haben, ist viel sauberer als mit 'reduce'. Es gibt keine einzige integrierte Methode, um es zu tun, die am nächsten kommt, sind integrierte Methoden, die das Array für Sie loopen. – SeinopSys

+0

Die Funktion und die Schleife, die Sie zur Verfügung gestellt haben, tun, was Sie wollen. Was ist der Grund, warum Sie nach einer anderen Methode suchen? Aus Leistungsgründen? Haben Sie ein großes Array und möchten nicht das gesamte Array durchlaufen? Zu wissen, was Ihr Problem ist, hilft bei der Antwort. –

+0

@SaeedD., Zum Zählen müssen Sie jedes Element überprüfen. –

Antwort

2

Es könnte verschiedene Ansätze für einen solchen Zweck geben.
Und Ihr Ansatz mit for Schleife ist offensichtlich nicht fehl am Platz (außer dass es redundant durch die Menge des Codes aussieht).
Hier sind einige weitere Ansätze, das Auftreten eines bestimmten Wertes in einem Array zu erhalten:

  • Mit Array.forEach Methode:

    var arr = [2, 3, 1, 3, 4, 5, 3, 1]; 
    
    function getOccurrence(array, value) { 
        var count = 0; 
        array.forEach((v) => (v === value && count++)); 
        return count; 
    } 
    
    console.log(getOccurrence(arr, 1)); // 2 
    console.log(getOccurrence(arr, 3)); // 3 
    
  • Mit Array.filter Methode:

    function getOccurrence(array, value) { 
        return array.filter((v) => (v === value)).length; 
    } 
    
    console.log(getOccurrence(arr, 1)); // 2 
    console.log(getOccurrence(arr, 3)); // 3 
    
3

Sie reduzieren verwenden könnte um dorthin zu gelangen :

Working example

var a = [1,2,3,1,2,3,4]; 

var map = a.reduce(function(obj, b) { 
    obj[b] = ++obj[b] || 1; 
    return obj; 
}, {}); 
+1

Meine Stimme geht an diese, da ich denke, das ist genau die grundlegende Antwort auf alle Fragen beginnend mit "gib mir eine Lösung, um die Anzahl der Male zu finden ... bla bla. – Redu

0

Sie können indexOf() Funktion zu finden und zählen jedes value inverwenden möchten 0

function g(array,value){ 
    var n = -1; 
    var i = -1; 
    do { 
    n++; 
    i = array.indexOf(value, i+1); 
    } while (i >= 0 ); 

    return n; 
} 
Verwandte Themen