主要学习js中数组的过滤方法
<script>
const inventors = [
{ first: 'Albert', last: 'Einstein', year: 1879, passed: 1955 },
{ first: 'Isaac', last: 'Newton', year: 1643, passed: 1727 },
{ 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 flavours = ['Chocolate Chip', 'Kulfi', 'Caramel Praline', 'Chocolate', 'Burnt Caramel', 'Pistachio', 'Rose', 'Sweet Coconut', 'Lemon Cookie', 'Toffeeness', 'Toasted Almond', 'Black Raspberry Crunch', 'Chocolate Brownies', 'Pistachio Almond', 'Strawberry', 'Lavender Honey', 'Lychee', 'Peach', 'Black Walnut', 'Birthday Cake', 'Mexican Chocolate', 'Mocha Almond Fudge', 'Raspberry'];
const people = ['Beck, Glenn', 'Becker, Carl', 'Beckett, Samuel', 'Beddoes, Mick', 'Beecher, Henry', 'Beethoven, Ludwig', 'Begin, Menachem', 'Belloc, Hilaire', 'Bellow, Saul', 'Benchley, Robert', 'Benenson, Peter', 'Ben-Gurion, David', 'Benjamin, Walter', 'Benn, Tony', 'Bennington, Chester', 'Benson, Leana', 'Bent, Silas', 'Bentsen, Lloyd', 'Berger, Ric', 'Bergman, Ingmar', 'Berio, Luciano', 'Berle, Milton', 'Berlin, Irving', 'Berne, Eric', 'Bernhard, Sandra', 'Berra, Yogi', 'Berry, Halle', 'Berry, Wendell', 'Bethea, Erin', 'Bevan, Aneurin', 'Bevel, Ken', 'Biden, Joseph', 'Bierce, Ambrose', 'Biko, Steve', 'Billings, Josh', 'Biondo, Frank', 'Birrell, Augustine', 'Black Elk', 'Blair, Robert', 'Blair, Tony', 'Blake, William'];
// Array.prototype.filter()
// 1. Filter the list of inventors for those who were born in the 1500's
const fifteen = inventors.filter(function (inventor) {
if (inventor.year >= 1500 && inventor.year < 1600) {
return true
}
})
console.log("1500's")
console.log(fifteen)
const __fifteen = inventors.filter(inventor => (inventor.year >= 1500 && inventor.year < 1600))
console.table(__fifteen)
// Array.prototype.map()
// 2. Give us an array of the inventors' first and last names
const fullName = inventors.map(inventor => (inventor.first + ' ' + inventor.last))
console.log("fullname")
console.log(fullName)
// Array.prototype.sort()
// 3. Sort the inventors by birthdate, oldest to youngest
const older = inventors.sort(function (inventora, inventorb) {
for (var i = 0; i < inventors.length; i++) {
const inventora = inventors[i]
const inventorb = inventors[i + 1]
if (inventora.year > inventorb.year) {
return -1
} else {
return 1
}
}
})
console.log('olderList')
console.log(older)
const ordered = inventors.sort(function (firstName, secondName) {
if (firstName.year > secondName.year) {
return 1; // 对 sort 函数,返回值为 -1 排在前面,1 排在后面
} else {
return -1;
}
});
console.table(ordered);
const __ordered = inventors.sort((a, b) => (a > b) ? 1 : -1);
console.table(__ordered);
// Array.prototype.reduce()
// 4. How many years did all the inventors live?
let total = 0;
let totalArr = [];
for (i = 0; i < inventors.length; i++) {
inventors[i].alive = inventors[i].passed - inventors[i].year
totalArr.push(inventors[i].alive)
}
for(n = 0 ; n < inventors.length; n++){
total = total + parseInt(totalArr[n])
}
console.log('totallive')
console.log(total)
// 5. Sort the inventors by years lived
const alive = inventors.sort(function (alivea,aliveb){
if(alivea.passed-alivea.year > aliveb.passed-aliveb.year){
return 1
}else{
return -1
}
})
console.log('alive')
console.log(alive)
// 6. create a list of Boulevards in Paris that contain 'de' anywhere in the name
// https://en.wikipedia.org/wiki/Category:Boulevards_in_Paris
// 7. sort Exercise
// Sort the people alphabetically by last name
const lastList = inventors.sort((lastA,lastB) => {
return (lastA.last > lastB.last) ? 1 : -1
})
console.log('lastList')
console.log(lastList)
// 8. Reduce Exercise
// Sum up the instances of each of these
const data = ['car', 'car', 'truck', 'truck', 'bike', 'walk', 'car', 'van', 'bike', 'walk', 'car', 'van', 'car', 'truck'];
const reduce = data.reduce((obj,item)=>{
if(!obj[item]){
obj[item] = 0
}
obj[item]++;
return obj
},{})
console.log(reduce)
</script>