Size: a a a

JavaScript Noobs — сообщество новичков

2020 December 18

j

jk in JavaScript Noobs — сообщество новичков
Игорь Web
Подскажите: IE 11 ругается на синтаксическую ошибку в этой строке. Как исправить? const index = (1 + elements.findIndex(n => n === e.target)) % elements.length;
А покажи текст ошибки.
источник

ИW

Игорь Web in JavaScript Noobs — сообщество новичков
его нет
источник

D

Dmitry in JavaScript Noobs — сообщество новичков
Ребят, а как можно улучшить мой код:
function foldIntervals(intervals, newDistance) {
 let result = [];
 let cur = new Interval;
 for (const i of intervals) {
   cur.increment(i);
   if (cur.distance == newDistance) {
     result.push(cur);
     cur = new Interval;
   }
 }
 return result;
}

?

Его цель исходный интервалов с меньшими дистанциями сконвертировать в массив интервалов с новой, более крупной дистанцией.
источник

D

Dmitry in JavaScript Noobs — сообщество новичков
1. Насколько понимаю for-of конструкция выполняется быстрее чем Array.forEach ?
2. У меня тут строка cur = new Interval в условии, но по-другому пока не приходит в голову как написать. Если сделать метод clear() на интервале, то получится, что я изменяю добавленный элемент в результирующий массив, что не есть гуд
источник

j

jk in JavaScript Noobs — сообщество новичков
Игорь Web
его нет
Стрелочные функции не поддерживаются. findIndex не поддерживается.
источник

ИW

Игорь Web in JavaScript Noobs — сообщество новичков
jk
Стрелочные функции не поддерживаются. findIndex не поддерживается.
так и подумал. А как изменить этот код не подскажите? Я не разберусь сам
источник

j

jk in JavaScript Noobs — сообщество новичков
Игорь Web
так и подумал. А как изменить этот код не подскажите? Я не разберусь сам
Ну что-то вроде этого должно работать.

let find = -1
for (let i = 0; i < elements.length; i++) {
 if (elements[i] === e.target) {
   find = i
   break
 }
}

const index = (1 + find) % elements.length
источник

ИW

Игорь Web in JavaScript Noobs — сообщество новичков
да, отлично. Спасибо!
источник

j

jk in JavaScript Noobs — сообщество новичков
Dmitry
1. Насколько понимаю for-of конструкция выполняется быстрее чем Array.forEach ?
2. У меня тут строка cur = new Interval в условии, но по-другому пока не приходит в голову как написать. Если сделать метод clear() на интервале, то получится, что я изменяю добавленный элемент в результирующий массив, что не есть гуд
Я не уверен что там по оптимизации, но технически при for of используется итератор, это функция которая выполняется и возвращает объекты на каждую итерацию, так что не думаю что это будет быстрее чем forEach.
источник

j

jk in JavaScript Noobs — сообщество новичков
В смысле асинхронное поведение у for of? Это ещё почему?
источник

VH

Vladyslav Hrehul in JavaScript Noobs — сообщество новичков
jk
Стрелочные функции не поддерживаются. findIndex не поддерживается.
Там достаточно стрелочную переписать на обычную и все будет ок
источник

j

jk in JavaScript Noobs — сообщество новичков
Vladyslav Hrehul
Там достаточно стрелочную переписать на обычную и все будет ок
А findindex? У меня есть ie11, там findindex у массива нет, на mdn написано что не поддерживается.
источник

j

jk in JavaScript Noobs — сообщество новичков
В смысле не дожидается? Покажи пример.
источник

D

Dmitry in JavaScript Noobs — сообщество новичков
очень любопытно. Как так не дожидается?
источник

ИW

Игорь Web in JavaScript Noobs — сообщество новичков
jk
Ну что-то вроде этого должно работать.

let find = -1
for (let i = 0; i < elements.length; i++) {
 if (elements[i] === e.target) {
   find = i
   break
 }
}

const index = (1 + find) % elements.length
а нет, не работает такой вариант. Ошибка пропала, но сам код не работает
источник

j

jk in JavaScript Noobs — сообщество новичков
Ничего не понимаю, давай документацию, примеры. for of тормозит из-за итератора. Но в итераторе ничего магического нет. Это просто объект с методом next().
источник

j

jk in JavaScript Noobs — сообщество новичков
Игорь Web
а нет, не работает такой вариант. Ошибка пропала, но сам код не работает
Вроде идентичный результат должен быть, дебажь.
источник

VH

Vladyslav Hrehul in JavaScript Noobs — сообщество новичков
jk
А findindex? У меня есть ie11, там findindex у массива нет, на mdn написано что не поддерживается.
а, да, не поддерживает,
как альтернатива еще можна что-то такого придумать;

var index = -1;
arr.filter(function (x, i) {
        return x === 2 ? index = i : 0;
   });
источник

D

Dmitry in JavaScript Noobs — сообщество новичков
Все ок. Но что посоветуешь? Можно ли мне мой код улучшить?
источник

DM

Denys Mikhalenko in JavaScript Noobs — сообщество новичков
Даже в С\С++ я такого не припоминаю )
источник