计算重复数组导致javascript

时间:2016-01-10 00:03:17

标签: javascript arrays

我试图简单地计算一个数组中的所有重复项,并将数组作为一个包含重复数量的字符串。这是我到目前为止 -

invent = ['a', 'b', 'b', 'b'];

function inventItem () {
invent.sort();

var currentItem = null;
var count = 0;
for (var i = 0; i < invent.length; i++) {
    if (invent[i] != currentItem) {
        if (count > 0) {
            newInventList = (currentItem + ' (' + count + ')');
        }
        currentItem = invent[i];
        count = 1;
    } else {
        count++;
    }
}
if (count > 0) {
    newInventList = (currentItem + ' (' + count + ')');
}
}

问题是变量newInventList仅存储结果b (3)我希望它还有a (1)。所以数组中的所有内容都意味着我需要将newInventList的数据类型更改为数组?

2 个答案:

答案 0 :(得分:1)

您似乎想要计算出现次数,而不仅仅是重复次数。一种方法是创建每个项目的地图,并为每个项目增加一个计数器:

invent = ['a', 'b', 'b', 'b'];
var occurences = {};

for (var i = 0; i < invent.length; i++) {
    var item = invent[i];
    var count = occurences[item] || 0;
    occurences[item] = count + 1;
}

然后,您可以根据需要输出occurences

var output = '';
var items = Object.keys(occurences);

for (var j = 0; j < items.length; j++) {
    var item = items[j];
    output = item + ' (' + occurences[item] + ')'; 
}

答案 1 :(得分:-1)

是的,将它更改为数组,而不是将变量赋值给它们,如下所示:

newInventList.append((currentItem +'('+ count +')');

相关问题