, пожалуйста, скажите мне любой хороший алгоритм/код, чтобы получить список уникальных значений из массива и счет его появления в массиве. (Я использую javascript).Как подсчитать Соответствующие значения в массиве Javascript
ответ
Для метода, который удаляет дубликаты из массива и возвращает новый массив с уникальными значениями, вы можете проверить следующие Array.unique implementation. С сложностью O (n) это, конечно, не самый быстрый алгоритм, но будет выполнять работу для небольших несортированных массивов.
Она распространяется под лицензией GPLv3, так что я должен иметь возможность вставить реализацию здесь:
// **************************************************************************
// Copyright 2007 - 2009 Tavs Dokkedahl
// Contact: http://www.jslab.dk/contact.php
//
// This file is part of the JSLab Standard Library (JSL) Program.
//
// JSL is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 3 of the License, or
// any later version.
//
// JSL is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
// ***************************************************************************
Array.prototype.unique =
function() {
var a = [];
var l = this.length;
for(var i=0; i<l; i++) {
for(var j=i+1; j<l; j++) {
if (this[i] === this[j]) // If this[i] is found later in the array
j = ++i;
}
a.push(this[i]);
}
return a;
};
Вы бы иметь возможность использовать его следующим образом:
var myArray = new Array("b", "c", "b", "a", "b", "g", "a", "b");
myArray.unique(); // returns: ["c", "g", "a", "b"]
Вы можете настроить выше, чтобы как-то добавить количество вхождений каждого значения.
O (n * n). Не впечатлен. – outis
скажите, пожалуйста, я использую его правильно: arrtmp.unique = function() { var a = []; var l = это.длина; для (var i = 0; i
его не возвращает мне уникальный массив –
Используйте объект как ассоциативный массив:
var histo = {}, val;
for (var i=0; i < arr.length; ++i) {
val = arr[i];
if (histo[val]) {
++histo[val];
} else {
histo[val] = 1;
}
}
Это должно быть в худшем случае O (N * Log (N)), в зависимости от времени для доступа к свойствам объекта. Если вы хотите только строки, цикл по свойствам объекта:
for (val in histo) {...}
Мне нравится это решение. Мне особенно нравится, что вы упомянули о большой скорости O. – Jondlm
простой способ заключается в цикле по массиву раз и подсчет значений в хэш
a = [11, 22, 33, 22, 11];
count = {}
for(var i = 0; i < a.length; i++)
count[a[i]] = (count[a[i]] || 0) + 1
«счетчик» будет как это {11: 2, 22: 2, 33: 1}
для отсортированного массива следующий будет быстрее
a = [11, 11, 11, 22, 33, 33, 33, 44];
a.sort()
uniq = [];
len = a.length
for(var i = 0; i < len;) {
for(var k = i; k < len && a[k] == a[i]; k++);
if(k == i + 1) uniq.push(a[i])
i = k
}
// here uniq contains elements that occur only once in a
его не работает приятель –
Я могу подтвердить, что это работает, как говорит стереофрог, вы ДОЛЖНЫ делать что-то неправильно. +1 стереофрог! – PaulM
Этот метод работает для массивов примитивов - строки, числа, булевы,
и объекты, которые можно сравнить (как элементы DOM)
Array.prototype.frequency= function(){
var i= 0, ax, count, item, a1= this.slice(0);
while(i<a1.length){
count= 1;
item= a1[i];
ax= i+1;
while(ax<a1.length && (ax= a1.indexOf(item, ax))!= -1){
count+= 1;
a1.splice(ax, 1);
}
a1[i]+= ':'+count;
++i;
}
return a1;
}
var arr= 'jgeeitpbedoowknnlfiaetgetatetiiayolnoaaxtek'.split('');
var arrfreq= arr.frequency();
Возвращаемое значение находится в порядке первой инстанции каждого уникальный элемент в массиве.
Вы можете отсортировать его, как вы как- это виды с самого высокого до самой низкой частоты:
arrfreq.sort(function(a, b){
a= a.split(':');
b= b.split(':');
if(a[1]== b[1]){
if(a[0]== b[0]) return 0;
return a[0]> b[0]? 1: -1;
}
return a[1]> b[1]? -1: 1;
});
arrfreq теперь возвращает (Array): [ 'е: 7', 'т: 6', 'а : 5' , 'я: 4', 'о: 4', 'н: 3', 'г: 2', 'к: 2', 'л: 2', 'б: 1', 'd: 1 ',' f: 1 ',' j: 1 ',' p: 1 ',' w: 1 ',' x: 1 ',' y: 1 ']
не должен опускаться IE:
Array.prototype.indexOf= Array.prototype.indexOf ||
function(what, index){
index= index || 0;
var L= this.length;
while(index< L){
if(this[index]=== what) return index;
++index;
}
return -1;
}
- 1. Как подсчитать значения в массиве?
- 2. Соответствующие значения в строковом массиве
- 3. Как подсчитать экземпляры определенного значения в массиве?
- 4. Как подсчитать одинаковые значения в многомерном массиве?
- 5. Как подсчитать значение в массиве в javascript
- 6. Как подсчитать элементы в массиве в Javascript
- 7. Соответствующие значения в массивах javascript
- 8. Значения, не соответствующие правилу в массиве 2d
- 9. Подсчитать дублирующиеся значения в многомерном массиве
- 10. Как подсчитать значения в нескольких объектах в массиве js?
- 11. Как подсчитать количество повторений переменных в массиве javascript?
- 12. Как подсчитать значения в определенном диапазоне в массиве Numpy?
- 13. Как подсчитать значения в массиве объектов json? (В VueJS)
- 14. Как подсчитать 2 разных повторяющихся значения в массиве - Swift
- 15. Как я могу подсчитать и уменьшить значение значения в массиве?
- 16. Как подсчитать значения tru/false в массиве json?
- 17. Как подсчитать словари в массиве MongoDB?
- 18. Как подсчитать количество заказов в массиве?
- 19. Как подсчитать повторяющееся значение в массиве и сохранить в массиве
- 20. Как подсчитать число или символы, соответствующие шаблону?
- 21. Как подсчитать количество массивов в вложенном массиве с помощью javascript
- 22. Соответствующие значения в хэшах
- 23. Как проверить соответствующие значения массива в php?
- 24. PHP, как подсчитать значения массивов?
- 25. Неопределенные значения в массиве Javascript
- 26. запрессовки значения в массиве Javascript
- 27. Подсчитать узлы, соответствующие шаблону строки в XML
- 28. Как извлечь соответствующие значения присутствующих при JSON массиве
- 29. Документы в массиве, соответствующие последовательности
- 30. получить соответствующие элементы в массиве
Возможный дубликат [Подсчет появления элементов массива JavaScript] (https: // stackove rflow.com/questions/5667888/counting-the-occurrences-of-javascript-array-elements) –