Вот еще пример темы в интернете по анализу и сортировке этих использований массивов, а результаты можно распечатать в консоли браузера для сравнения. Вот два набора массивов
- Группа 1 (включая имя, фамилию, дату рождения и дату смерти)
const inventors = [
{ first: 'Albert', last: 'Einstein', year: 1879, passed: 1955 },
{ first: 'wawa', last: 'fs', year: 1830, passed: 1905 },
{ first: 'grvd', last: 'xcvxcv', year:1900, passed: 1977 },
{ first: 'Hanna', last: 'Hammarström', year: 1829, passed: 1909 }
];
- Вторая группа (массив people, содержит группу имен людей, разделенных запятыми.)
['Albert, Einstein', 'wawa, fs', 'grvd, xcvxcv', 'Hanna, Hammarström']
На основе этих двух наборов массивов ответьте на следующие вопросы.
- Ширма для изобретателей 16 века рождения;
- Перечислите их имена и фамилии в виде массива;
- По дате рождения и отсортированы от большего к меньшему;
- Подсчитайте, сколько лет все изобретатели прожили вместе;
- Сортировка по возрасту;
filter() (операция фильтра, отфильтровать все элементы, удовлетворяющие условиям, если true, вернуться к формированию нового массива, в качестве примера возьмем первый вопрос:)
function bornyear(inventor) {
return inventor.year >= 1800 && inventor.year < 1900;
}
var fifteen = inventors.filter(bornyear);
console.log(fifteen);
// 可简化为
const fifteen = inventors.filter(inventor => (inventor.year >= 1500 && inventor.year < 1600));
Во-первых, с помощью функции Bornyear отфильтруйте условия в функции, отфильтруйте изобретателей, дата рождения которых приходится на 19 век, и верните true или false. Затем, вызывая метод filter, элементы массива Inventors фильтруются на предмет соответствия условиям фильтрации функции Bornyear. Наконец, массив результатов, отвечающий условиям, возвращается следующим образом.
[
{first: "Albert", last: "Einstein", year: 1879, passed: 1955},
{first: "wawa", last: "fs", year: 1830, passed: 1905},
{first: "Hanna", last: "Hammarström", year: 1829, passed: 1909}
]
map (операция карты, обработка каждого элемента исходного массива и возврат нового массива. Возьмем второй вопрос в качестве примера)
const fullnames = inventors.map(inventor => `${inventor.first} ${inventor.last}`);
console.log(fullnames);
Напечатанный результат:
["Albert Einstein", "wawa fs", "grvd xcvxcv", "Hanna Hammarström"]
// inventors.map后面通过传入原操作数组,然后再进行字符串拼接的处理。最终返回的数组是一个经过处理之后的新数组
sort (операция сортировки, порядок сортировки по умолчанию основан на строковых кодовых точках Unicode, таких как 10 до 2, числа перед прописными буквами и прописные буквы перед строчными буквами. Вы также можете использовать функцию сравнения, и массив будет вызываться согласно функции.Возвращаемое значение сортируется, формат следующий)
function compare(a, b) {
if (a < b) {
// 按某种排序标准进行比较, a 小于 b
return -1;
}
if (a > b) {
return 1;
}
// 当a === b 时候
return 0;
}
Для сравнения чисел, а не строк, функция сравнения может просто вычесть b из a. Следующая функция отсортирует массив в порядке возрастания:
function compareNumbers(a, b) {
return a - b;
}
Для третьего вопроса мы можем просто использовать сложение и вычитание, чтобы сравнить
const birthdate = inventors.sort((inventora, inventorb) => (inventorb.year - inventora.year));
console.log(birthdate)
Напечатанный результат:
[
{first: "grvd", last: "xcvxcv", year: 1900, passed: 1977},
{first: "Albert", last: "Einstein", year: 1879, passed: 1955},
{first: "wawa", last: "fs", year: 1830, passed: 1905},
{first: "Hanna", last: "Hammarström", year: 1829, passed: 1909}
]
уменьшить () (операция слияния, всего два параметра, первый — это функция, которую можно понимать как аккумулятор, просматривающий массив для накопления возвращаемого значения, а второй — начальное значение. Если начальное значение не указано , будет использован массив Первый элемент в .В качестве примера возьмем четвертый вопрос :)
const totalyears = inventors.reduce((total, inventor) => { return total + (inventor.passed - inventor.year); }, 0);
console.log(totalyears);
Массивы удобно использовать для поиска суммируемых значений по условиям фильтрации. Возвращает совокупный результат