我试图简单地计算一个数组中的所有重复项,并将数组作为一个包含重复数量的字符串。这是我到目前为止 -
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
的数据类型更改为数组?
答案 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 +')');