Сопоставляйте, фильтруйте, сортируйте и сокращайте использование массивов

внешний интерфейс Unicode

Вот еще пример темы в интернете по анализу и сортировке этих использований массивов, а результаты можно распечатать в консоли браузера для сравнения. Вот два набора массивов

  • Группа 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);

Массивы удобно использовать для поиска суммируемых значений по условиям фильтрации. Возвращает совокупный результат