你好,我是javascript新手。了解数组时,我遇到了有关排序的问题。首先,我根据他们的生日进行分类,其次,根据他们的年龄进行分类。我仍然得到相同的结果。请帮忙。
代码:
const inventors = [
{ first: 'Albert', last: 'Einstein', year: 1879, passed: 1955 },
{ first: 'Isaac', last: 'Newton', year: 1643, passed: 1711},
{ first: 'Galileo', last: 'Galilei', year: 1564, passed: 1642 },
{ first: 'Marie', last: 'Curie', year: 1867, passed: 1934 },
{ first: 'Johannes', last: 'Kepler', year: 1571, passed: 1630 },
{ first: 'Nicolaus', last: 'Copernicus', year: 1473, passed: 1543 },
{ first: 'Max', last: 'Planck', year: 1858, passed: 1947 },
{ first: 'Katherine', last: 'Blodgett', year: 1898, passed: 1979 },
{ first: 'Ada', last: 'Lovelace', year: 1815, passed: 1852 },
{ first: 'Sarah E.', last: 'Goode', year: 1855, passed: 1905 },
{ first: 'Lise', last: 'Meitner', year: 1878, passed: 1968 },
{ first: 'Hanna', last: 'Hammarström', year: 1829, passed: 1909 }
];
const firstSort= inventors.sort((a,b) => a.year > b.year? -1 : 1 );
console.log(firstSort);
const secondSort = inventor.sort((a,b) => (a.year-a.passed > b.year-b.passed) ? -1 : 1);
console.log(secondSort);
这是第一个输出:
0: Object { first: "Ada", last: "Lovelace", year: 1815, … }
1: Object { first: "Sarah E.", last: "Goode", year: 1855, … }
2: Object { first: "Johannes", last: "Kepler", year: 1571, … }
3: Object { first: "Marie", last: "Curie", year: 1867, … }
4: Object { first: "Isaac", last: "Newton", year: 1643, … }
5: Object { first: "Nicolaus", last: "Copernicus", year: 1473, … }
6: Object { first: "Albert", last: "Einstein", year: 1879, … }
7: Object { first: "Galileo", last: "Galilei", year: 1564, … }
8: Object { first: "Hanna", last: "Hammarström", year: 1829, … }
9: Object { first: "Katherine", last: "Blodgett", year: 1898, … }
10: Object { first: "Max", last: "Planck", year: 1858, … }
11: Object { first: "Lise", last: "Meitner", year: 1878, … }
这是第二个输出
0: Object { first: "Ada", last: "Lovelace", year: 1815, … }
1: Object { first: "Sarah E.", last: "Goode", year: 1855, … }
2: Object { first: "Johannes", last: "Kepler", year: 1571, … }
3: Object { first: "Marie", last: "Curie", year: 1867, … }
4: Object { first: "Isaac", last: "Newton", year: 1643, … }
5: Object { first: "Nicolaus", last: "Copernicus", year: 1473, … }
6: Object { first: "Albert", last: "Einstein", year: 1879, … }
7: Object { first: "Galileo", last: "Galilei", year: 1564, … }
8: Object { first: "Hanna", last: "Hammarström", year: 1829, … }
9: Object { first: "Katherine", last: "Blodgett", year: 1898, … }
10: Object { first: "Max", last: "Planck", year: 1858, … }
11: Object { first: "Lise", last: "Meitner", year: 1878, … }
答案 0 :(得分:1)
答案 1 :(得分:0)
您可以根据想要获得所需结果的顺序更改条件。
首先,您需要按年份排序,然后可以通过减去passed和year属性对排序后的数组进行排序。
我希望以下代码能解决您的问题。
const inventors = [
{ first: 'Albert', last: 'Einstein', year: 1879, passed: 1955 },
{ first: 'Isaac', last: 'Newton', year: 1643, passed: 1711},
{ first: 'Galileo', last: 'Galilei', year: 1564, passed: 1642 },
{ first: 'Marie', last: 'Curie', year: 1867, passed: 1934 },
{ first: 'Johannes', last: 'Kepler', year: 1571, passed: 1630 },
{ first: 'Nicolaus', last: 'Copernicus', year: 1473, passed: 1543 },
{ first: 'Max', last: 'Planck', year: 1858, passed: 1947 },
{ first: 'Katherine', last: 'Blodgett', year: 1898, passed: 1979 },
{ first: 'Ada', last: 'Lovelace', year: 1815, passed: 1852 },
{ first: 'Sarah E.', last: 'Goode', year: 1855, passed: 1905 },
{ first: 'Lise', last: 'Meitner', year: 1878, passed: 1968 },
{ first: 'Hanna', last: 'Hammarström', year: 1829, passed: 1909 }
];
let sortedArr = inventors.sort((a,b) =>(a.year > b.year) ? 1 : ((b.year > a.year) ? -1 : 0)).sort((a,b) => (a.year - a.passed > b.year - b.passed) ? 1 : (b.year - b.passed > a.year - a.passed) ? -1 : 0 )
console.log(sortedArr)