Испытание "Уникальные элементы"


#23

Да, действительно отлично у него составлен код. Осталось только прочитать про lastIndexOf. Я так понял что он проверял является ли индекс какого либо числа им же, но последним


#24

не совсем, indexOf возвращает индекс позиции, где была впервые найдена подстрока
lastIndexOf делает то же самое, но возвращает индекс позиции, где была в последний раз найдена подстрока
поскольку искомой подстрокой является элемент массива, то если оба метода возвращают один и тот же индекс, то они ссылаются на один и тот же элемент, а значит этот элемент уникален.


#25

Я так и понял. Просто описал не работу lastIndexOf, а всей строки проверки. Немного только не понятно по какой причине в академии не было ни строчки про этот метод, ведь он по сути противоположность indexOf. Хватило бы и одной строки про него…


#26

а тут много упрощающих жизнь методов не описано(типа вы сами изобретаете велосипед). типа на интенсив идти надо.


#27

Изобретение велосипедов бывает полезно, когда эти велосипеды очень маленькие). Интересно насколько быстро работает библиотечный метод в сравнении с приведенными тут “велосипедными” примерами


#28

только это нативный метод.
ну изобретать велосипеды чтобы описать работу нативных методов - ну такое…


#29

Изобретать только для того, что бы понять примерно как мыслить. Кирпичик так сказать создать в голове. Я пока что не работал программистом, но думаю, что такие задания как никак помогают в разработке своих более серьезных программ или библиотек. А так конечно нет смысла писать аналоги нативных методов, особенно если те и так работают максимально быстро и безопасно


#30

курсы к сожалению не помогают мыслить правильно. вы никогда не найдете тут ответов на такие простые вопросы, типа почему если null == 0 (false) и null > 0 (false), то null >= 0 (true)
или почему выражение вида [+!+[]]+[+[]] имеет смысл в JS
курсы лишь неплохой старт к изучению (самостоятельно по самомучителям или по интенсивам)


#31

Вот тут с вами полностью согласен. Изучал си по книге, там очень много нюансов описано было. А тут можно сказать демо версия языка или технологии, но зато в интерактивной форме что добавляет интереса как раз для старта. Дальше планирую http://learn.javascript.ru/ вот тут изучать. Или книгу какую нибудь может посоветуете, если далеко продвинулись в JS?


#32

самомучитель Кантора вполне сойдет. только учтите что там задачи на порядок сложнее, чем тут


#33

Спасибо за рекомендацию. тут задачи понятно, что простые. в массивах например куча заданий решалась где то в 3 строки. Ещё вопросик: у него есть курсы и есть книги, это они https://webbooks.com.ua/books-main/javascript/sovremennyj-uchebnik-javascript-ilya-kantop-3-knigi-2015-pdf/ ?


#34

http://learn.javascript.ru/ собственно и есть его проект. там и в пдф есть учебник этот, ну и курсы продаются тоже.


#35

Мой код: var numbers = [1, 4, 5, 9, 2, 5, 1];
var uniqueNumbers = [];
for (var i = 0; i < numbers.length; i++) {
var number = numbers[i];
var firstIndex = numbers.indexOf(number);
var secondIndex = numbers.lastIndexOf(number);

if (firstIndex === secondIndex) {
uniqueNumbers.push(number)
}
}


#36

Далеко не самое красивое решение, но такого здесь еще не было.

Мой вариант
var numbers =  [101,15,116,20,116,15,2];
var uniqueNumbers = [];

for (var i = 0; i < numbers.length; i++) {
  var compare = numbers[i];
    for (var j = i + 1; j < numbers.length; j++) {
    if (compare === numbers[j]) {
      delete numbers[i]; 
      delete numbers[j]
      }
    }
  } 

for (var k = 0; k < numbers.length; k++) {
  if (numbers[k] > 0) {
    uniqueNumbers.push(numbers[k]);
    }
  }

#38

через filter -

Сводка
let uniqueNumbers = [];

const isUnique = (arr, el) => arr.filter(a => a === el).length === 1;
const uniqueElements = (data) => {
    return data.filter(item => isUnique(data, item));
};

uniqueNumbers = uniqueElements(numbers);

#39

у вас сложность алгоритма O(n^2)
можно же проще через O(n):

let uniqueNumbers = numbers.filter(item => numbers.indexOf(item) == numbers.lastIndexOf(item));

@sasha_sm Есть такое очучение, что в проверке неправильно что-то работает, потому что такая запись возвращает в тестах пустой массив, но это не так в консоли.
P.S. да, я понимаю что решение не из тех, что учат на интерактивах, но все же


#40

я знаю, что у меня усложненный алгоритм,
я видел решение Снайпера через lastIndexOf и IndexOf - уже после того, как написал свое


#41

Это гениально!


#42

Класс. Действительно самое оптимальное и удобочитаемое :+1:t2:


#43

if (k === 1) не могу понять, как это работает?