Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Array.prototype.unique = function() {
var res = [];
var already = {};
for (var i = 0; i < this.length; i++) {
var val = this[i];
if (typeof(already['z'+val]) == 'undefined') {
res.push(val);
already['z'+val] = true;
}
}
return res;
}
[{val:1},{val:2},{val:3}].unique();
[1,'1',[1,2,3],'1,2,3'].unique();
Array.prototype.unique = function () {
var obj = new Object();
var elem;
for (let i = 0; elem = this[i]; ++i) {obj[elem] = 1};
var arr = [];
for (elem in obj) {arr.push(elem)};
return arr;
}
for(j=0;j<=this.length-1;j++)
for(var j = 0; j < this.length; j++)
[].indexOf(); // вернет 0, должен -1
[].indexOf(null); // вернет 0, должен -1
[1,2].indexOf(); // вернет 2, должен -1
[1,2].indexOf(null); // вернет 2, должен -1
[undefined].indexOf(); // вернет 1, должен 0
[1,2,3,2].indexOf(2); // вернет 3, должен 1; в стандарте прописано что
возвращаемый индекс должен быть с начала массива (если не указан необязательный аргумент offset, который тут попросту опустили)
[1,0,2].indexOf(false); // вернет 1, должен -1; я искал false, а не ноль
[1,0,2].indexOf(''); // вернет 1, должен -1; я искал пустую строку, а не ноль
[1,'',2].indexOf(0); // вернет 1, должен -1; я искал ноль, а не пустую строку
и т.д.
Array.prototype.indexOf = function(element) {
for(var i = this.length; --i > -1 && element !== this[i];);
return i;
}
// я все таки добавил пару маленьких фиксов
Парочка полезных функций