3

次のようなオブジェクト リテラルの配列があります。

var myArr = [];

myArr[0] = {
   'score': 4,
   'name': 'foo'
}

myArr[1] = {
   'score': 1,
   'name': 'bar'
}

myArr[2] = {
   'score': 3,
   'name': 'foobar'
}

配列を並べ替えて、「スコア」パラメーターで昇順になり、次のように変化するようにするにはどうすればよいですか。

myArr[0] = {
   'score': 1,
   'name': 'bar'
}

myArr[1] = {
   'score': 3,
   'name': 'foobar'
}

myArr[2] = {
   'score': 4,
   'name': 'foo'
}

前もって感謝します。

4

3 に答える 3

10

試すmyArr.sort(function (a, b) {return a.score - b.score});

配列要素がソートされる方法は、渡された関数が返す数値によって異なります。

  • < 0(負の数):a先に進みますb
  • > 0(正の数):b先に進みますa
  • 0: この場合、2 つの数値はソートされたリストで隣接します。ただし、並べ替えが安定しているとは限りません。相互の順序aと相対的な順序変わる可能性があります。b
于 2011-05-03T22:27:02.713 に答える
4

MDNのArray.sort ドキュメントをご覧ください。具体的には、カスタムcompareFunctionの提供に関するドキュメント

于 2011-05-03T22:27:17.400 に答える