#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);