Вы можете сделать это разными способами. Но если вы хотите добиться наилучших результатов, вы должны избегать n квадратных петель .
Так можно создать словарь подсчета значений. И перебрать ключи объекта в отсортированном порядке.
Использование Array.reduce
для создания объекта подсчета элементов массива. и Array.fill
заполнить массив одинаковыми значениями.
//Given Array
const arr = [1, 2, 4, 591, 392, 391, 2, 5, 10, 2, 1, 1, 1, 20, 20];
//Dictionary with count of each values in array
const arrCountObj = arr.reduce((acc, el) => {
if (acc[el]) {
acc[el] += 1
} else {
acc[el] = 1
}
return acc
}, {})
console.log(arrCountObj)
//Looping over sorted dictionary keys to create array based on condition
var out = Object.keys(arrCountObj).sort((a, b) => a - b).map(x => arrCountObj[x] > 1 ? new Array(arrCountObj[x]).fill(+x) : arrCountObj[x])
console.log(out)
Сложность времени: O (nlogn)
blockquote>
Попробуйте это:
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301]