Подсчет значений
Добрый день!
имеется массив: arNAMES = [ "Значение1", "Значение3", "Значение3", "Значение1", "Значение1", "Значение6", "Значение6" ]; нужно посчитать количество одинаковых значений и переписать в новый массив, например: arNAMES["Значение1"] =3 шт; arNAMES["Значение3"] =2 шт; arNAMES["Значение6"] =2 шт; подскажите, как можно это реализовать? |
var arNames = [ "Значение1", "Значение3", "Значение3", "Значение1", "Значение1", "Значение6", "Значение6" ]; var result = arNames.reduce(function(map, item) { map[item] = (map[item] || 0) + 1; return map; }, {}); alert(JSON.stringify(result)); |
Если значения только текстовые, то просто:
var arNAMES = [ "Значение1", "Значение3", "Значение3", "Значение1", "Значение1", "Значение6", "Значение6" ]; function calc(arr){ var out = {}; arr.forEach(function(val){ if(val in out) out[val]++; else out[val] = 1; }); return out } alert(JSON.stringify( calc(arNAMES) ,0 , '\t')) |
var arNames = [ "Значение1", "Значение3", "Значение3", "Значение1", "Значение1", "Значение6", "Значение6" ]; var result = arNames.reduce(function(map, item) { map[item] = (map[item] || 0) + 1; return map; }, {}); alert(JSON.stringify(result)); подскажите, как теперь разложить массив result? т.е. отдельно ключ и его значение чтобы далее их можно было обработать, например так: <span>ключ массива</span> - <span>значение ключа</span> |
никто не подскажет? :)
|
var arNames = [ "value1", "value3", "value3", "value1", "value1", "value6", "value6" ]; var result = arNames.reduce(function(map, item) { map[item] = (map[item] || 0) + 1; return map; }, Object.create(null)); s="" for (i in result) s+="<span>"+i+"</span>\t-\t"+"<span>"+result[i]+"</span>\n" alert(s) // <span>value1</span> - <span>3</span> // <span>value3</span> - <span>2</span> // <span>value6</span> - <span>2</span> |
Цитата:
|
Цитата:
|
рони, новая фича.) Раньше писали __proto__: null. Объект без прототипа - считай таблица.
|
Aetae,
:write: ок буду знать ))) |
Часовой пояс GMT +3, время: 01:53. |