Вы можете проверить следующий подход, используя один цикл for/of
. Но сначала мне нужно создать Set с действительными идентификаторами, чтобы я мог отбросить noise
данные из массива test
:
const data = [
{no: 3, name: 'drink'},
{no: 90, name: 'eat'},
{no: 20, name: 'swim'}
];
const userArr = [3,3,3,3,3,3,3,3,7,7,9,9,3,3,3,90,20,20,20,20];
let ids = new Set(data.map(x => x.no));
let newArr = [];
for (i of userArr)
{
let found = newArr.findIndex(x => x.num === i)
if (found >= 0)
newArr[found].total += 1;
else
ids.has(i) && newArr.push({num: i, total: 1});
}
console.log(newArr);
[119 ] Первый день недели получен из текущей локали. Если Вы не установите локаль календаря (Calendar.getInstance (Локаль) или новый GregorianCalendar (Локаль)), то это будет использовать значение по умолчанию системы. Значение по умолчанию системы может быть переопределено параметром JVM:
public static void main(String[] args) {
Calendar c = new GregorianCalendar();
System.out.println(Locale.getDefault() + ": " + c.getFirstDayOfWeek());
}
Это должно показать другой вывод с различными параметрами JVM для языка/страны:
-Duser.language=en -Duser.country=US
-> en_US: 1
(Воскресенье)-Duser.language=en -Duser.country=GB
-> en_GB: 2
(Понедельник)Не забывайте, что это могло изменить другой behavio (u) r также.
Согласно API:
Календарь определяет определенную для локали семидневную неделю с помощью двух параметров: первый день недели и минимальные дни на первой неделе (от 1 до 7). Эти числа взяты от данных ресурсов локали, когда Календарь создается. Они могут также быть указаны явно через методы для того, чтобы установить их значения.
Таким образом, если Вы удостоверитесь, что Ваша локаль соответственно настроена, то это будет неявно установлено. Лично, я предпочел бы явно устанавливать это...
Посмотрите № 64038 для способов установить локаль из командной строки.
Вы попытались вызвать JVM с другой локалью? Но необходимо быть осторожными с побочными эффектами...