У меня есть массив объектов, который создается путем вытаскивания данных из файла csv. Массив выглядит следующим образом (при печати).Как динамически создавать массив объектов?
Array[4]
0:Object
value1:"200"
value2:"95"
value3:"6395"
value4:"2"
1:Object
2:Object
3:Object
То, как я создал это, является следующим.
var strCSV = e.target.result;
var arrCSV = strCSV.match(/[\w .]+(?=,?)/g);
var noOfCols = 4;
// To ignore the first row which is header
var hdrRow = arrCSV.splice(0, noOfCols);
var data = [];
while (arrCSV.length > 0) {
var obj = {};
// extract remaining rows one by one
var row = arrCSV.splice(0, noOfCols)
for (var i = 0; i < row.length; i++) {
obj[hdrRow[i]] = row[i].trim();
}
// push row to an array
data.push(obj)
}
Итак, скажем, теперь я хочу создать еще один массив объектов с одинаковыми значениями данных, но с разными ключами.
var tableData = [
{key1: "", key2: "", key3: "", key4: ""}];
Я пробовал разные способы сделать это, я не смог это сделать. Например, я попробовал следующее.
for(var i=0; i<data.length; i++){
console.log(i);
tableData[i]["key1"] = data[i].value1;
}
Или что-то подобное. Я создал пустой массив tableData = [], думая, что создание элементов на месте сделает трюк, но это не будет. Есть какой-либо способ сделать это? Я не могу просто создать объект и скопировать все элементы из первого массива один за другим, так как количество элементов в первом массиве может быть чем угодно.
Это все еще немного неясно, о чем вы спрашиваете. Как бы выглядел ваш выходной формат? –
Вы забыли начать объект. С помощью этого будет инициализировать объект и установить значение: tableData [i] = {key1: data [i] .value1} – Gilsdav
Есть ли переменное количество ключей в каждом объекте? другими словами, может ли второй объект иметь значение «value1:« 1200 »и третье значение« value4: »3», value5: «22»?? В каком случае, как вы сопоставляете одно имя ключа с другим? –