2014-10-07 4 views
2

Я ввел случайное количество строк в массив.Проверьте массив для повторяющихся значений, получите значение и получите счет

var array = ["car", "plane", "plane", "car", "car"]; 

Id хотел получить значение массива и получить количество раз, они были вытеснены в массив. т.е.

var a = "car"; 
var aCount = 3; 
var b = "plane"; 
var bCount = 2; 

var text = "'" + a + "'" + " was found " + aCount + " times"; 
return text 

Я не видеть, как я могу использовать цикл для сравнения массива [I] со всеми другими значениями массива, особенно considerung array.length определяется случайным образом?

спасибо

ответ

2

Создание объекта с помощью кнопок, установленных в качестве значений массива и начать отсчет!

var arrayMap = {}; 
for (var i = 0; i < array.length; i++) { 
    if (arrayMap.hasOwnProperty(array[i])) { 
     arrayMap[array[i]]++; 
    } else { 
     arrayMap[array[i]] = 1; 
    } 
} 

arrayMap теперь будет подсчет всех значений массива.

Демо: http://jsfiddle.net/oe0x6dbg/

0

Вы можете сделать это

var arrStr = array.join(); 
var result = {}; 
for (var i = 0; i < array.length; i++) { 
    result[array[i]] = arrStr.match(new RegExp(array[i], "g")).length; 
    arrStr.replace(new RegExp(array[i], "g"), ""); 
} 
console.log(result); // {car: 3, plane: 2} 
0

Простое решение может быть, чтобы добавить "подсчет" объект так:

var array = ["car", "plane", "plane", "car", "car"]; 

var count = {}; 

// Map each element in the array to a key in the object 
for (var i = 0; i < array.length; i++) { 
    if (typeof count[array[i]] === 'undefined') { 
     count[array[i]] = 1; 
    } else { 
     count[array[i]]++; 
    } 
} 

// Loop through the object and print out the counts 
for (var i in count) { 
    console.log("'" + i + "'" + " was found " + count[i] + " times"); 
} 

JSFiddle

1

Вы can Array.reduce:

var array = ["car", "plane", "plane", "car", "car"]; 

var result = array.reduce(function(dict, item) { 
       dict[item] = (dict[item] || 0) + 1; 
       return dict; 
      }, {}); 

for(var prop in result) { 
    console.log('\'' + prop + '\' was found ' + result[prop] + ' times'); 
} 

/* 
    result = { 
     'car': 3, 
     'plane': 2 
    } 

    Console: 
    -------- 
    'car' was found 3 times 
    'plane' was found 2 times 
*/ 
Смежные вопросы