Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Отсортировать массив (https://javascript.ru/forum/dom-window/46556-otsortirovat-massiv.html)

Jekins 14.04.2014 22:20

Отсортировать массив
 
Доброго времени суток.
Мне необходимо отсортировать массив по числовым результатам каждого элемента, а затем выдать title этих результатов по убыванию.
Я смог лишь отсортировать по числовым результатам, но как теперь вытащить у них title, сохроняя сортировку, не представляю и прошу у вас помощи. Вот пример:
var driver = {
	title: 'водитель',
	result: 5
};
var spaceman = {
	title: 'космонафт',
	result: 2
};
var doctor = {
	title: 'доктор',
	result: 8
};

var resultArray = [driver.result, spaceman.result, doctor.result];
resultArray.sort(function(a,b){return b - a});
console.log(resultArray);
console.log('Здесь должны быть их title по убыванию');

ksa 14.04.2014 22:25

Цитата:

Сообщение от Jekins
а затем выдать title этих результатов по убыванию

Т.е. еще раз сортировать?
Или просто вывести "элементы массива в обратном порядке"?

Aetae 14.04.2014 22:26

var driver = {
    title: 'водитель',
    result: 5
};
var spaceman = {
    title: 'космонафт',
    result: 2
};
var doctor = {
    title: 'доктор',
    result: 8
};
 
var resultArray = [driver, spaceman, doctor];
resultArray.sort(function(a,b){return b.result - a.result});
console.log(resultArray);

Jekins 14.04.2014 22:41

Цитата:

Сообщение от Aetae (Сообщение 307713)
var driver = {
    title: 'водитель',
    result: 5
};
var spaceman = {
    title: 'космонафт',
    result: 2
};
var doctor = {
    title: 'доктор',
    result: 8
};
 
var resultArray = [driver, spaceman, doctor];
resultArray.sort(function(a,b){return b.result - a.result});
console.log(resultArray);

Во! спасибо! То, что надо.
Тогда ещё один вопрос: есть ли возможность в строку:
var resultArray = [driver, spaceman, doctor];

не ставить по одной переменной, а как-то объединить их в другую переменную и вывести в этой строке. Что-то типо:

var results {
    var driver: {
        title: 'водитель',
        result: 5
    },
    var spaceman = {
        title: 'космонафт',
        result: 2
    },
    var doctor = {
        title: 'доктор',
        result: 8
    }
}
 
var resultArray = [results];
resultArray.sort(function(a,b){return b.result - a.result});

Jekins 14.04.2014 22:42

Цитата:

Сообщение от ksa (Сообщение 307712)
Т.е. еще раз сортировать?
Или просто вывести "элементы массива в обратном порядке"?

Ниже помогли уже, спасибо, но если знаешь ответ на второй мой вопрос, то буду благодарен.

Aetae 14.04.2014 22:53

var resultArray = [
    {
        title: 'водитель',
        result: 5
    },
    {
        title: 'космонафт',
        result: 2
    },
    {
        title: 'доктор',
        result: 8
    }
]

resultArray.sort(function(a,b){return b.result - a.result});
console.log(resultArray)

Jekins 14.04.2014 23:01

Цитата:

Сообщение от Aetae (Сообщение 307723)
var resultArray = [
    {
        title: 'водитель',
        result: 5
    },
    {
        title: 'космонафт',
        result: 2
    },
    {
        title: 'доктор',
        result: 8
    }
]
resultArray.sort(function(a,b){return b.result - a.result});
console.log(resultArray)

Всё гениальное - просто))) Спасибо)


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