Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Разработайте функцию-конструктор, (https://javascript.ru/forum/misc/61999-razrabotajjte-funkciyu-konstruktor.html)

АртемZDAN_UA 19.03.2016 23:16

Разработайте функцию-конструктор,
 
Разработайте функцию-конструктор, которая будет создавать объект Human(человек) создайте массив объектов и реализуйте функцию, которая будет сортировать элементы массива по значению свойства Age по возрастанию или по убыванию.



<script>
function Human()
{
this.name = name;
this.sex = sex;
this.lang = lang;
this.age = age;

Human.prototype.eldest = function ()
{
var max = 0;
var maxAge = "";
for (var age in Human)
{
if(max <Human.age)
{
max = Human.age;
maxAge = age;
alert ( maxAge)
}
}
}

var Ken = new Human(Ken, male, eng, 28);
var Pol = new Human(Pol, male, eng, 22);
var July = new Human(July, male, uk, 25);
var Bill = new Human(Bill, male, rus, 36);


</script>

Вот чтото такое придумал, но не работает???:help: :help:

dismantled 20.03.2016 03:42

function Human(name, sex, lang, age) {
  this.name = name;
  this.sex = sex;
  this.lang = lang;
  this.age = age;
}

Human.prototype.eldest = function(humans) {
	var maxAge = 0;
	humans.forEach(function(human) {
  	if (human.age > maxAge)
    	maxAge = human.age;
  });
	alert(maxAge);
};

var human = new Human();
var humans = [];
humans.push(new Human("Ken", "male", "eng", 28));
humans.push(new Human("Pol", "male", "eng", 22));
humans.push(new Human("July", "female", "uk", 25));
humans.push(new Human("Bill", "male", "rus", 36));
  
human.eldest(humans);


Посмотреть в действии можно тут: https://jsfiddle.net/8u63xku6/

АртемZDAN_UA 20.03.2016 11:49

Цитата:

Сообщение от Rise (Сообщение 411492)
АртемZDAN_UA,
function Human(name, sex, lang, age) {
	this.name = name;
	this.sex  = sex;
	this.lang = lang;
	this.age  = age;
}

var Ken  = new Human('Ken',  'male', 'eng', 28);
var Pol  = new Human('Pol',  'male', 'eng', 22);
var July = new Human('July', 'male', 'uk',  25);
var Bill = new Human('Bill', 'male', 'rus', 36);

var People = [Ken, Pol, July, Bill];

function SortByAge(array, order) { // order = 'asc' || 'desc'
	// ...
	// code
	// ...
}

SortByAge(People, 'asc');



Спасибо, но я так и не понял до конца... Я только учусь, вот и туплю))

n_js 30.11.2016 16:16

Должно получится что то в этом роде.
 
function Human(name, sex, lang, age) {
            this.name = name;
            this.sex = sex;
            this.lang = lang;
            this.age = age;

        }

        var Ken = new Human('Ken', 'male', 'eng', 28);
        var Pol = new Human('Pol', 'male', 'eng', 22);
        var Maria = new Human('Maria', 'Female', 'rus', 74);
        var July = new Human('July', 'male', 'uk', 25);
        var Bill = new Human('Bill', 'male', 'rus', 36);

        var People = [Ken, Pol, July, Bill, Maria];
        
        for (var i = 0; i < People.length;i++) {
            document.write("Все что находится в массиве: " + People[i].name + " | " + People[i].sex + " | " + People[i].lang + " | " + People[i].age + "<br />");
        }

        function SortByAge(array, order) { // order = 'asc'-по возрастанию || 'desc'-по убыванию
            if (order == "asc") {
                document.write("Находим самого взрослого кандидата!" + "<br />");
                var maxValue = Number.NEGATIVE_INFINITY;
                var maxVname = "";
                for (var i = 0; i < array.length; i++) {
                    if (array[i].age > maxValue) {
                        maxValue = array[i].age;
                        maxVname = array[i].name;
            }
        }
                return document.write("Имя: " + maxVname + "<br />" + " Возраст: " + maxValue);
        } else if (order == "desc") {
                document.write("Находим самого младшего кандидата!" + "<br />");
                var minVelue = Number.POSITIVE_INFINITY;
                var minVname = "";
                for (var i = 0; i < array.length; i++) {
                    if (array[i].age < minVelue) {
                        minVelue = array[i].age;
                        minVname = array[i].name;
        }
        }
                return document.write("Имя: " + minVname + "<br />" + " Возраст: " + minVelue);;
        } else {
                document.write("error!");
        }
        };

        SortByAge(People, 'asc');// order = 'asc' || 'desc'

:)

Coriolan161 30.11.2016 16:58

n_js,
Самое лучшее решение)))

Dilettante_Pro 30.11.2016 17:37

Coriolan161,
Цитата:

Сообщение от Coriolan161
n_js,
Самое лучшее решение)))

А плюсик в карму?

Coriolan161 30.11.2016 18:10

Dilettante_Pro,
хех)

DynkanMaclaud 01.12.2016 01:18

n_js,
Слишком мудрено...
/*
   Функция-конструктор персоны
   * @{string} name - имя
   * @{number} age - возраст
  */
  function Human(name, age) {
    this.name = name;
    this.age = age;
  };
 var Ken = new Human('Ken', 28);
 var Pol = new Human('Pol', 22);
 var Maria = new Human('maria', 74);
 var July = new Human('july', 25);
 var Bill = new Human('Bill', 36);
 //массив всех персон
 var peoples = [Ken, Pol, July, Bill, Maria];
 /*
  Функция сортировки по возрасту
  * @{object} mas - массив персон
 */
 function sortByAge(mas) {
 		//Проверка параметра на массив
		if (mas instanceof Array) { 
    	var sortedData = mas.sort(func)
    	return sortedData;
    } else console.log('Error');  
 
		function func(a, b) {
    	return a.age - b.age;
    };
 };
 /*
  * Функция сортировки по имени
  * @{object} mas - массив персон
 */
 function sortByName(mas) {
 		//Проверка параметра на массив
		if (mas instanceof Array) { 
    	var sortedData = mas.sort(func)
    	return sortedData;
    } else console.log('Error'); 
    function func(a, b) {
      return a.name.toUpperCase() > b.name.toUpperCase();
    };
 };
/*
	* Функция рендера данных
  * @{object} mas - массив объектов
  * @{string} key - item объекта
*/
 function render(mas, item) {
 	mas.forEach(show);
  function show(el, i) {
  	document.body.textContent +=' '+(el[item]);
  };
 };
 
 render(sortByName(peoples), 'name');
 render(sortByAge(peoples), 'age');

https://jsfiddle.net/xe0t8f4v/3/


Часовой пояс GMT +3, время: 08:57.