-1
var names = ['Bob', 'Joe', 'Phil', 'Max'];
var ages = [8, 23, 15, 17];

名前を年齢順に並べ替える必要があります。次のようなものです:

var result = [1, 3, 2, 0];
4

2 に答える 2

2

名前を並べ替えるように質問しましたが、出力にはインデックスがあります。どちらがいいのかわかりません。

これは名前を年齢でソートします(質問ごと):

var sortedNames = ages.map(function(age, i) {
    return {age:age, i:i};
}).sort(function(a, b) {
    return a.age - b.age;
}).map(function(a) {
    return names[a.i];
});

これはインデックスをソートします(あなたの例による):

var result = ages.map(function(age, i) {
    return i;
}).sort(function(i, j) {
    return ages[i] - ages[j];
});
于 2013-11-03T21:16:01.467 に答える
2

データ構造を次のように変更することをお勧めします

people = [
    {name: "John", age: 62},
    {name: "Mike", age: 21},
    {name: "Dave", age: 54}
];
people.sort(function(val1, val2) {
    return val2.age - val1.age;
});
people;//[{name:"John", age:62}, {name:"Dave", age:54}, {name:"Mike", age:21}]
于 2013-11-03T21:30:07.327 に答える