Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.02.2015, 07:44
Интересующийся
Отправить личное сообщение для Denis_Artamonov Посмотреть профиль Найти все сообщения от Denis_Artamonov
 
Регистрация: 04.02.2015
Сообщений: 13

Подсчет значений
Добрый день!

имеется массив:
arNAMES = [
		"Значение1",
		"Значение3",
		"Значение3",
		"Значение1",
		"Значение1",
		"Значение6",
		"Значение6"
		];


нужно посчитать количество одинаковых значений и переписать в новый массив, например:
arNAMES["Значение1"] =3 шт;
		arNAMES["Значение3"] =2 шт;
		arNAMES["Значение6"] =2 шт;


подскажите, как можно это реализовать?
Ответить с цитированием
  #2 (permalink)  
Старый 08.02.2015, 09:03
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

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));
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 08.02.2015, 09:04
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,577

Если значения только текстовые, то просто:
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'))
__________________
29375, 35
Ответить с цитированием
  #4 (permalink)  
Старый 08.02.2015, 11:08
Интересующийся
Отправить личное сообщение для Denis_Artamonov Посмотреть профиль Найти все сообщения от Denis_Artamonov
 
Регистрация: 04.02.2015
Сообщений: 13

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>
Ответить с цитированием
  #5 (permalink)  
Старый 08.02.2015, 18:22
Интересующийся
Отправить личное сообщение для Denis_Artamonov Посмотреть профиль Найти все сообщения от Denis_Artamonov
 
Регистрация: 04.02.2015
Сообщений: 13

никто не подскажет?
Ответить с цитированием
  #6 (permalink)  
Старый 08.02.2015, 18:59
Аспирант
Посмотреть профиль Найти все сообщения от freee
 
Регистрация: 05.02.2015
Сообщений: 51

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>
Ответить с цитированием
  #7 (permalink)  
Старый 08.02.2015, 19:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

Сообщение от freee
Object.create(null)
а почему не просто {}
Ответить с цитированием
  #8 (permalink)  
Старый 08.02.2015, 20:02
Аспирант
Посмотреть профиль Найти все сообщения от freee
 
Регистрация: 05.02.2015
Сообщений: 51

Сообщение от рони
а почему не просто {}
В случае, если у него расширен Object.prototype свойства попадут в строку. Так надежней.
Ответить с цитированием
  #9 (permalink)  
Старый 09.02.2015, 01:17
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,577

рони, новая фича.) Раньше писали __proto__: null. Объект без прототипа - считай таблица.
__________________
29375, 35
Ответить с цитированием
  #10 (permalink)  
Старый 09.02.2015, 01:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

Aetae,
ок буду знать )))
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчет суммы значений в импутах по id элементов qux Общие вопросы Javascript 5 10.12.2014 15:15
Подключение случайных значений Nyam Общие вопросы Javascript 13 26.04.2014 20:46
Суммирование значений по всем динамически добавленным полям Joliat Общие вопросы Javascript 2 12.02.2014 16:01
Элементарный подсчет и калькулятор PashaShulga Общие вопросы Javascript 5 14.03.2012 21:42
Переодическое обновление значений для графика, функция для обновления значений yupa87 Общие вопросы Javascript 0 09.07.2009 14:48