Перейти к содержимому

Как сделать массив объектов js

  • автор:

Массив объектов в JavaScript

Самой распространенной многомерной структурой является массив объектов. У него есть некоторые особенности. Давайте их изучим. Пусть у нас есть следующий массив с юзерами:

Давайте переберем всех юзеров и выведем в консоль их имена и фамилии. При переборе массива объектов как правило используют только один цикл по массиву, а внутри него к объектам обращаются по ключам. Сделаем это:

for (let user of users) < console.log(user.name + ' ' + user.surn); >

Дан следующий массив работников:

let employees = [ < name: 'name1', salary: 300, >, < name: 'name2', salary: 400, >, < name: 'name3', salary: 500, >, ];

Выведите на экран данные каждого работника в формате имя — зарплата .

Дан следующий массив работников:

let employees = [ < name: 'name1', salary: 300, >, < name: 'name2', salary: 400, >, < name: 'name3', salary: 500, >, ];

Выведите на экран сумму зарплат всех работников.

Дан следующий массив работников:

let employees = [ < name: 'name1', salary: 300, age: 28, >, < name: 'name2', salary: 400, age: 29, >, < name: 'name3', salary: 500, age: 30, >, < name: 'name4', salary: 600, age: 31, >, < name: 'name5', salary: 700, age: 32, >, ];

Выведите на экран сумму зарплат тех работников, возраст которых равен или более 30 лет.

Массивы

Для хранения набора данных в языке JavaScript предназначены массивы. Массивы в JavaScript представлены объектом Array . Объект Array предоставляет ряд свойств и методов, с помощью которых мы можем управлять массивом и его элементами.

Создание массива

Можно создать пустой массив, используя квадратные скобки или конструктор Array:

const users = new Array(); const people = []; console.log(users); // Array[0] console.log(people); // Array[0]

Можно сразу же инициализировать массив некоторым количеством элементов:

const users = new Array("Tom", "Bill", "Alice"); const people = ["Sam", "John", "Kate"]; console.log(users); // ["Tom", "Bill", "Alice"] console.log(people); // ["Sam", "John", "Kate"]

Можно определить массив и по ходу определять в него новые элементы:

const users = []; users[1] = "Tom"; users[2] = "Kate"; console.log(users[1]); // "Tom" console.log(users[0]); // undefined

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

Еще один способ инициализации массивов представляет метод Array.of() — он принимает элементы и инициизирует ими массив:

const people = Array.of("Tom", "Bob", "Sam"); console.log(people); // ["Tom", "Bob", "Sam"]

Array.from

И еще один способ представляет функция Array.from() . Она имеет много вариантов, рассмотрим самые распространенные:

Array.from(arrayLike) Array.from(arrayLike, function mapFn(element) < . >) Array.from(arrayLike, function mapFn(element, index) < . >)

В качестве первого параметра — arrayLike функция принимает некий объект, который, условно говоря, «похож на массив», то есть может быть представлен в виде набора элементов. Это может быть и другой массив, это может быть и строка, которая по сути предоставляет набор символов. Вообщем какой-то набор элементов, который можно преобразовать в массив. Кроме того, это может и некий объект, в котором определено свойство length . Например:

const array = Array.from("Hello"); console.log(array); // ["H", "e", "l", "l", "o"]

В данном случае в функцию передается строка и возвращается массив, каждый элемент которого предоставляет один из символов этой строки.

В качестве второго параметра передается функция преобразования, которая через первый параметр получает текущий элемент набора и возвращает некоторый результат его трансформации. Например:

const numbers = [1, 2, 3, 4]; const array = Array.from(numbers, n => n * n); console.log(array); // [1, 4, 9, 16]

В данном случае в функцию Array.from() передается массив чисел. Второй параметр — функция (в данном случае в ее роли выступает лямбда-выражение) запускается для каждого числа из этого массива и получает это число через параметр n . В самом лямбда-выражении возвращаем квадрат этого числа. В итоге Array.from() возвратит новый массив, в котором будут квадраты чисел из массива numbers.

И еще одна версия функции Array.from() в качестве второго параметра принимает функцию преобразования, в которую кроме элемента из перебираемого набора передается и индекс этого элемента:

Array.from(arrayLike, function mapFn(element, index) < . >)

Используем эту версию и передадим в функцию объект со свойством length :

const array = Array.from(, (element, index) => < console.log(element); // undefined return index; >); console.log(array); // [0, 1, 2]

Здесь в функцию передается объект, у которого свойство length равно 3. Для функции Array.from это будет сигналом, в возвращаемом массиве должно быть три элемента. При этом неважно, что функция преобразования из второго параметра принимает элемент набора (параметр element ) — в данном случае он будет всегда undefined , тем не менее значение length:3 будет указателем, что возвращаемый массив будет иметь три элемента с соответственно индексами от 0 до 2. И через второй параметр функции преобразования — параметр index мы можем и получить текущий индекс элемента.

Тем не менее мы можем передать объект, где в качестве названий свойств применяются индексы. В этом случае объект превратится в массивоподобный объект, который можно перебрать:

const array = Array.from(, (element) => < console.log(element); return element; >); console.log(array); // ["Tom", "Sam", "Bob"]

length

Чтобы узнать длину массива, используется свойство length :

const fruit = []; fruit[0] = "яблоки"; fruit[1] = "груши"; fruit[2] = "сливы"; console.log("В массиве fruit ", fruit.length, " элемента"); for(let i=0; i < fruit.length; i++) console.log(fruit[i]);

По факту длиной массива будет индекс последнего элемента с добавлением единицы. Например:

const users = []; // в массиве 0 элементов users[0] = "Tom"; users[1] = "Kate"; users[4] = "Sam"; for(let i=0; i
Tom Kate undefined undefined Sam

Несмотря на то, что для индексов 2 и 3 мы не добавляли элементов, но длиной массива в данном случае будет число 5. Просто элементы с индексами 2 и 3 будут иметь значение undefined .

JS. Как из массива объектов сделать объект с параметрами из свойств?

0xD34F

Эх, за это я и не люблю стрелочные функции, пока распутаешь такой ребус много времени может уйти. И это у вас простые примеры, а бывает такие хитрые и неочевидные сокращения, что в в диву даешься.

reinmaker90 @reinmaker1990

Надим Закиров, а что в них сложного после стрелки идет блок с инструкциями? читается так же как и обычная функция

reinmaker90, тут наверное дело привычки, мне проще писать по старому, когда с одного взгляда понятно что, куда и откуда.

как создать массив объектов js

Для создания массива объектов в JavaScript можно выполнить следующие шаги:

  1. Создать объект
  2. Создать массив и добавить созданный объект в массив
// Создаем объект const car1 =  make: 'Toyota', model: 'Camry', year: 2019 >; const car2 =  make: 'Honda', model: 'Civic', year: 2018 >; // Создаем массив объектов const cars = [car1, car2]; console.log(cars); // Массив двух объектов 

Также, объекты можно указывать и создавать сразу в массиве:

const cars = [  make: 'Toyota', model: 'Camry', year: 2019 >,  make: 'Honda', model: 'Civic', year: 2018 >, ]; console.log(cars); // Массив двух объектов 

В обоих случаях мы создали массив объектов cars , который содержит два элемента — объекты car1 и car2 .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *