Получить уникальное значение из массива и сосчитать номер. повторений
У меня проблема при получении значений из массива: мой код -
var arr = [];
for (var k =1; k<=10000; k++)`
{
ret = iimSet("k", k);
retcode = iimPlay(test)
var s = iimGetLastExtract(1);
if(s == null){
break;
}
else {
arr.push(s);
}
var all = arr.join(" , ");
var final = squash(arr);
}
так что я могу удалить дубликаты, но все результаты в одной строке.
Чего я на самом деле хочу достичь, так это
var arr = [];
for (var k =1; k<=10000; k++)`
{
ret = iimSet("k", k);
retcode = iimPlay(test)
var s = iimGetLastExtract(1);
if(s == null){
break;
}
else {
arr.push(s);
}
var final = squash(arr);
only unqiue values
var unq = no. of total unique values
}
for (var h =1; h<=unq; h++)`
{
var g=h-1;
var c = every varaible value one by one (only unique value)
var b = no. of times the value is repeating in the array
ret = iimSet("c", c);
ret = iimSet("b", b);
iimPlay(Save)
}
Так что в основном я хочу, чтобы все значения из массива одно за другим и их не было. Я застрял в этой точке.
1 ответ
Я бы сохранил количество вхождений в объекте, ключом которого является рассматриваемое значение:
var obj = {};
for (var k =1; k<=10000; k++)
{
// these three lines are your code and I dont know what they do. But `s` is our value
ret = iimSet("k", k);
retcode = iimPlay(test)
var s = iimGetLastExtract(1);
if (!obj[s]) obj[s] = 0;
obj[s]++;
}
// the unique elements of your array are in Object.keys(obj)
// the count of occurrences are in obj[element];