Именованные элементы массива?
Недавно наткнулся в консоли на массив, у которого наряду с нумерованными элементами есть именованные свойства как у объекта, при изучении JS, я не сталкивался с подобным, и всегда думал, что массив может иметь только нумерованные поля(на скрине видно что длина массива считается именно только по колличеству нумерованных элементов).
Объясните пожалуйста, что означают выделенные именованные свойства и как можно создать такой массив
Ответы (2 шт):
В Javascript массивы - это объекты класса Array. А любому объекту можно установить произвольные свойства
const arr = [1, 2, 3];
arr.field1 = 'ABC';
arr.field2 = 42;
console.log(arr);
Это называется "Ассоциативные массивы"
Все в js - это примитивы (boolean, null, undefined, bigint, number, string, и symbol) и объекты (все остальное). Если мы сделаем typeof на массив, то получим object.
Например, мы можем создать коллекцию Map, которая сделаем нам ассоциативный массив.
const arr = new Map([
['key1', 'value1'],
['key2', 'value2'],
['key3', 'value3']
]);
console.log(arr)
Но исходя из того, что все в js это object, мы можем создать новый стандратный массив и подобно обьекту записать в него свойство
let arr = [ 0, 1, 2, 3 ];
arr["string"] = 'test'
arr.string2 = 'test2'
console.log(arr)
Если посмотреть в хроме в консоле данный массив, то мы получим
[0, 1, 2, 3, string: 'test', string2: "test2"]
0: 0
1: 1
2: 2
3: 3
string: "test"
string2: "test2"
