2016-03-21 3 views
-1

, если у меня есть массив как:массив сортировки по определенному значению в JavaScript

var myArray = [] 

for(i = 0; i < 10; i++) { 
myArray.unshift({ 
    myString: 'string'+ i +'', 
    myValue: i; 
}); 
} 

и хотите отсортировать его по значениям «MyValue». подобный

myArray.myValue.sort (function(a, b){return a-b}); 

Однако, это не работает.

+2

Вы можете поделиться образцом ввода и вывода? – gurvinder372

+0

Что-то вроде этого? 'myArray.sort (функция a, b) {return a.myValue - b.myValue})' – Matthijs

+0

Он только хочет отсортировать одно конкретное свойство объектов в массиве и оставить другие свойства нетронутыми - он не хочет сортировать весь массив * на * некоторое свойство. – TheHansinator

ответ

1

Вы имеете в виду, что желаете сортировать по myValue?

myArray.sort(function a, b) { 

    return a.myValue - b.myValue; 

}); 
0

Если вы хотите отсортировать только один объект собственности (оставляя остальные нетронутыми), что вы должны сделать, это сделать копию этого конкретного свойства каждого элемента массива, вроде тех, что, а затем скопируйте свойства заново:

// make a copy of the myValues into a new array containing just those 
var myValueArray = myArray.map(function(item) { return item.myValue; }); 
// sort just the myValues in the copy 
myValueArray.sort(); 
// copy the sorted myValues back 
myValueArray.forEach(function(item, index){ myArray[index].myValue = item; }); 
Смежные вопросы