Intereting Posts
Ошибки базы данных PHP PDO Специальные символы Отладка подключения порта IDE к XDebug: «Ожидание подключения» Сортировка массива слов – неанглийские буквы + двойные буквы символов PHP Поддерживать связь между двумя серверами php, websocket и socket.io PHP: cURL и отслеживать все перенаправления Symfony вызывает сборщик мусора PHP на Ubuntu 14.04, даже если session.gc_probability установлен в 0 PHP: Требуется ли продление класса другому «использовать» для вызова пространства имен? несколько способов вызова родительского метода в php Доступна библиотека создания и проверки форм и jQuery? Как я могу обеспечить безопасный способ сброса пароля? PHP GD-библиотека установлена, но не работает на CentOS 6.4 Как получить счет Google +1 для текущей страницы в PHP? Скопируйте AMI в отдельный регион из отдельной учетной записи Обнаружение переломов в руке с использованием обработки изображений PHP: создание уникальных переменных в A для цикла

array_count_values ​​для JavaScript вместо

У меня есть следующий PHP-скрипт, теперь мне нужно сделать то же самое в JavaScript. Есть ли функция в JavaScript, которая работает аналогично функции PHP, я искал дни, но не могу найти ничего подобного? То, что я хочу сделать, – подсчитать количество раз, когда определенное слово используется в массиве.

$interfaceA = array($interfaceA_1,$interfaceA_2,$interfaceA_3,$interfaceA_4,$interfaceA_5,$interfaceA_6,$interfaceA_7,$interfaceA_8); $interfaceA_array=array_count_values($interfaceA); $knappsatsA = $interfaceA_array[gui_knappsats]; $touchpanelA = $interfaceA_array[gui_touchpanel]; 

    Почему бы просто не создать новый массив javascript «counts» Iterate over original array и увеличить количество «счетчиков» для ключей, встречающихся в массиве. http://jsfiddle.net/4t28P/1/

     var myCurrentArray = new Array("apple","banana","apple","orange","banana","apple"); var counts = {}; for(var i=0;i< myCurrentArray.length;i++) { var key = myCurrentArray[i]; counts[key] = (counts[key])? counts[key] + 1 : 1 ; } alert(counts['apple']); alert(counts['banana']); 

    Другим элегантным решением будет использование Array.prototype.reduce . Данный:

     var arr = new Array("apple","banana","apple","orange","banana","apple"); 

    Вы можете просто запустить сокращение на нем:

     var groups = arr.reduce(function(acc,e){acc[e] = (e in acc ? acc[e]+1 : 1); return acc}, {}); 

    Наконец, вы можете проверить результат:

     groups['apple']; groups['banana']; 

    В приведенном выше примере сокращение принимает два параметра:

    1. функция (анонимная здесь), берущая аккумулятор (инициализированный из второго аргумента сокращения) и текущий элемент массива
    2. начальное значение аккумулятора

    Независимо от того, что возвращает функция, она будет использоваться в качестве значения аккумулятора в следующем вызове.

    С точки зрения типа, независимо от типа элементов массива, тип аккумулятора должен соответствовать типу второго аргумента сокращения (начальное значение) и типу возвращаемого значения анонимной функции. Это также будет типом возвращаемого значения сокращения .

    Я думаю, эта ссылка даст вам ответ. http://phpjs.org/functions/array_count_values308

    Попробуйте этот код js

    http://phpjs.org/functions/array_count_values:308

    Как насчет этого:

     function arrayCountValues (arr) { var v, freqs = {}; // for each v in the array increment the frequency count in the table for (var i = arr.length; i--; ) { v = arr[i]; if (freqs[v]) freqs[v] += 1; else freqs[v] = 1; } // return the frequency table return freqs; }