Многомерный массив Javascript

#javascript #arrays

#javascript #массивы

Вопрос:

у меня есть массив

[RowDataPacket { всего: 1, имя устройства: ‘рабочий стол’, имя_месяца: ‘Октябрь’ }, RowDataPacket { всего: 1045, Имя устройства: ‘рабочий стол’, имя_месяца: ‘Ноябрь’ }, RowDataPacket { всего: 1783, Имя устройства: ‘мобильный’, имя_месяца: ‘Ноябрь’ }, RowDataPacket { итого: 150, Имя устройства: ‘tablet’, Имя месяца: ‘November’ } ]

Я пытаюсь создать такой массив, как этот

 [
  RowDataPacket {
    total: 0,
    deviceName: 'mobile',
    monthName: 'October'
  },
  RowDataPacket {
    total: 0,
    deviceName: 'tablet',
    monthName: 'October'
  },
  RowDataPacket {
    total: 1,
    deviceName: 'desktop',
    monthName: 'October'
  },
  RowDataPacket {
    total: 1045,
    deviceName: 'desktop',
    monthName: 'November'
  },
  RowDataPacket {
    total: 1783,
    deviceName: 'mobile',
    monthName: 'November'
  },
  RowDataPacket {
    total: 150,
    deviceName: 'tablet',
    monthName: 'November'
  }
]
 

Я попробовал следующий код, чтобы создать то же самое, но он работает не так, как ожидалось

 arr = [];
for (var i = 0; i < arr.length; i  ) {
    for (j = 0; j < i; j  ) {
        finalarr.push[j] = arr[i];
    }
}
 

Любая идея, как решить эту проблему

Комментарии:

1. можете ли вы указать более подробную информацию

2. эта структура данных не имеет смысла в javascript, массив может содержать только объекты, и если вы пытаетесь использовать словарь, то каждый ключ должен быть уникальным, лучшее, что вы могли бы сделать, это создать массив объектов, подобных этому: [{ k1 : "v1"},{k1 : "v1"},{k1 : "v1"}]

3. не могли бы вы рассказать мне, как это сделать, пожалуйста

Ответ №1:

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

 let internalObj = {
  "key1": "value1",
  "key2": "value2"
}

let finalArr = [];

for (let i = 0; i < 5; i  ) {
  finalArr.push(internalObj);
}

console.log(finalArr) 

Результаты кажутся немного запутанными в stackoverflow, я предлагаю вам попробовать это в своем коде.

Ответ №2:

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

 class RowDataPacket {
  constructor(data) {
    this.total = data.total
    this.deviceName = data.deviceName
    this.monthName = data.monthName
  }
}

const arr = [];
arr.push(new RowDataPacket({
  total: 0,
  deviceName: 'mobile',
  monthName: 'October'
}));
arr.push(new RowDataPacket({
  total: 0,
  deviceName: 'tablet',
  monthName: 'October'
}));
arr.push(new RowDataPacket({
  total: 1,
  deviceName: 'desktop',
  monthName: 'October'
}));
// push as many as you want.

console.log(arr);