Друзья, пожалуйста оцените работу коллеги и его результаты программирования на JS:
1. Есть ли грубые ошибки в построении кода?
2. Будут ли работать приведенные примеры функций?
3. Ваша общая оценка по 5 бальной шкале?
Сам код:
/*-------------------------------------------------- ЦИКЛЫ -----------------------------------------------*/
/* -------------------------------------------------------------------------------------------------------*/
/* -------------------------------------------------------------------------------------------------------*/
/*outer:
for (var n = 2; n < 20; n++) {
for (var i = 2; i < n; i++) {
if (n % i ==0) continue outer;
}
alert(n);
}*/
/* ------------------------------------------------ SWITCH -----------------------------------------------*/
/* -------------------------------------------------------------------------------------------------------*/
/* -------------------------------------------------------------------------------------------------------*/
/*var browser = 'Chrome';
switch (browser) {
case 'IE':
alert('О, да у вас IE!');
break;
case 'Chrome':
case 'Firefox':
case 'Safari':
case 'Opera':
alert('Да, и эти браузеры мы поддерживаем');
break;
default:
alert('Мы надеемся, что и в вашем браузере все ок!');
}*/
/* ------------------------------------------------ ОБЪЕКТЫ ----------------------------------------------*/
/* -------------------------------------------------------------------------------------------------------*/
/* -------------------------------------------------------------------------------------------------------*/
// перебор свойств объекта
// ________________________________________________________________________________
/*var user = {}
user.name = 'Vasya';
user.surname = 'Jolud';
user.name = 'Valera';
user.test = "test";
delete user.name;
for (var key in user) {
console.log(key + ":" + user[key]);
}*/
// клонирование объекта
// ________________________________________________________________________________
/*function clone(obj) {
var obj2 = {};
// если свойства могут быть объектами, то нужно перебирать и их
for(var key in obj) obj2[key] = obj[key];
return obj2;
}
var user = { name: 'Вася' };
var admin = clone(user);
admin.name = 'Петя';
alert(user.name);*/
// проверка на отсутствие свойства
// ________________________________________________________________________________
/*if ("prop" in obj) {}
// или
if (obj.prop !== undefined) {}*/
// умножение свойств объекта
// ________________________________________________________________________________
// проверка на число
function isNumeric(n) {
return !isNaN(parseFloat(n)) && isFinite(n)
}
/*var menu = {
width: 200,
height: 300,
title: "My menu"
};
function multiplyNumeric(obj) {
for (var key in obj) {
if (isNumeric(obj[key])) obj[key] *= 2;
}
}
multiplyNumeric(menu);*/
/* ----------------------------------------------- МАССИВЫ -----------------------------------------------*/
/* -------------------------------------------------------------------------------------------------------*/
/* -------------------------------------------------------------------------------------------------------*/
// манипуляции с массивом
// ________________________________________________________________________________
/*var style = ['jazz', 'blues'];
style.push('rock-n-roll');
style[style.length - 2] = 'classic';
style.shift();
alert(style[0]);
style.unshift('rap, reggae');*/
// выбор рандомного значения массива
// ________________________________________________________________________________
/*var randomArr = [1, 'true', 'yeah', 'wtf', 1488, {'name' : 'upa'}];
function selectValArr(arr, min, max) {
var rand = min + Math.floor( Math.random() * (max+1-min) );
return arr[rand];
}
alert(selectValArr(randomArr, 0, 6));*/
// добавить в массив если число и сложить значения
// ________________________________________________________________________________
/*var numbers = [];
while (true) {
var value = +prompt('vvedite chislo');
if (!value) break;
numbers.push(value);
}
var sum = 0;
for (var i = 0; i < numbers.length; i++) {
sum += numbers[i];
}
alert(sum);*/
// ищет значение и его номер в массиве
// ________________________________________________________________________________
/*var randomArr = [ "test", 2, 1.5, false ];
function findVal(arr, val) {
if (arr.indexOf) { // если метод существует
return arr.indexOf(val);
}
for (var i = 0; i < arr.length; i++) {
if (val === arr[i]) return i;
}
return -1;
}
alert(findVal(randomArr, false));*/
// фильтр в массиве
// ________________________________________________________________________________
/*var arr = [5, 4, 3, 8, 0];
var filtered = filterRange(arr, 1, 5);
function filterRange(arr, min, max) {
var newArr =[];
for (var i = 0; i < arr.length; i++) {
if (min <= arr[i] && arr[i] <= max ) {
newArr.push(arr[i]);
}
}
return newArr;
}
alert(filtered);
alert(arr);*/
// +++++++++++++++++++++ link ++++++++++++++++++++++
// [url]http://learn.javascript.ru/array[/url]
// решето Эратосфена - найдем простые числа до n
// ________________________________________________________________________________
// шаг 1
/*var arr = [];
for (var i=2; i<100; i++) {
arr[i] = true
}
// шаг 2
var p = 2;
do {
// шаг 3
for (i=2*p; i<100; i+=p) {
arr[i] = false;
}
console.log(arr)
// шаг 4
for (i=p+1; i<100; i++) {
if (arr[i]) break;
}
p = i;
} while (p*p < 100); // шаг 5
// шаг 6 (готово)
// посчитать сумму
var sum = 0;
for (i=0; i<arr.length; i++) {
if (arr[i]) {
sum += i;
}
}
alert(sum);*/
/* -------------------------------------------- МАССИВЫ: МЕТОДЫ ------------------------------------------*/
/* -------------------------------------------------------------------------------------------------------*/
/* -------------------------------------------------------------------------------------------------------*/
// уникальные элементы массива
// ________________________________________________________________________________
/*function unique(arr) {
var obj = {};
var result = [];
nextInput:
for(var i=0; i<arr.length; i++) {
var str = arr[i]; // для каждого элемента
for(var j=0; j<result.length; j++) { // ищем, был ли он уже?
if (result[j] == str) continue nextInput; // если да, то следующий
}
result.push(str);
}
return result;
}
var string = ['oops', 'poops', 'oops', 'wtf', 'ftw', '8-()', 'o|o', 'wtf'];
alert(unique(string));*/
// лучший вариант
/*function unique(arr) {
var obj = {};
for(var i=0; i<arr.length; i++) {
var str = arr[i];
obj[str] = true; // запомнить строку в виде свойства объекта
}
return Object.keys(obj); // или собрать ключи перебором для IE<9
}
var string = ['oops', 'poops', 'oops', 'wtf', 'ftw', '8-()', 'o|o', 'wtf'];
alert( unique(strings) );*/
// добавление уникального класса в свойство объекта
// ________________________________________________________________________________
/*var obj = {
className: 'new open'
}
function addClass(obj, cls) {
var classes = obj.className ? obj.className.split(' ') : [];
for (var i = 0; i < classes.length; i++) {
if (cls == classes[i]) return;
}
classes.push(cls);
obj.className = classes.join(' ');
}
addClass(obj, 'popup');
addClass(obj, 'new');
addClass(obj, 'open');
addClass(obj, 'open2');
alert(obj.className);*/
// camelCase
// ________________________________________________________________________________
/*function camelize(str) {
var arr = str.split('-');
for(var i=1; i<arr.length; i++) {
// преобразовать: первый символ с большой буквы
arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].slice(1);
}
return arr.join('');
}
alert(camelize('background-color'));*/
// +++++++++++++++++++++ link ++++++++++++++++++++++
//http://learn.javascript.ru/array-methods
/* ------------------------------------------------ РЕКУРСИЯ ---------------------------------------------*/
/* -------------------------------------------------------------------------------------------------------*/
/* -------------------------------------------------------------------------------------------------------*/
/*function sum(n) {
return (n != 1) ? n + sum(n-1): 1;
}
alert(sum(100));*/