arr = Array.from(new Set(arr));Но работает только с примитивами (строки, числа, bool) т.к. объекты сравниваются по ссылке, на выходе будет новый массивfunction dedupe(arr) {
const values = new Set();
const len = arr.length;
let offset = 0;
for(let i = 0; i < len; i++) {
let val = arr[i];
if(values.has(val)) {
offset++;
} else {
values.add(val);
arr[i - offset] = val;
}
}
arr.length = len - offset;
} //Ваша функция запроса, я же просто посчитаю рандомы для примера
//Значение аргумента по умолчанию подставил для 1-ого случая, у Вас же может быть проверка
function someAsync(cur = 1){
return Promise.resolve(cur * Math.random());
}
//Функция раннер, которая будет асинхронно-рекурсивно перевызываться
function run(next){
return someAsync(next).then(result => {
if(result < 0.1) { //Некое условие, что последний результат получен
return result;
}
return run(result); //Перезапуск
});
}
run().then(result => console.log('Последний результат:', result)); $('#marka option').each(function () {
var $this = $(this);
if (location.href.indexOf($this.val()) === -1) {
// не содержит
} else {
$this.prop('selected', true);
}
});Array.prototype.forEach.call(document.getElementById('marka').options, function(opt) {
if (location.href.indexOf(opt.value) === -1) {
// не содержит
} else {
opt.selected = true;
}
}); pasteControlItem: function () {
let item = document.querySelectorAll('.todo__item');
for (let i = 0; i < item.length; i++) {
let control = document.createElement('i');
control.setAttribute('aria-hidden', 'true');
control.classList.add('fa');
control.classList.add('fa-circle-thin');
item[i].insertBefore(control, item[i].childNodes[0]);
}
}pasteControlItem: function () {
let item = document.querySelectorAll('.todo__item');
for (let i = 0; i < item.length; i++) {
item.insertAdjacentHTML('afterBegin', '<i aria-hidden="true" class="fa fa-circle-thin"></i>');
}
}