У меня проблема с получением строк из JSON и их сохранением в отдельном объекте {}. Вот как я структурирую свои данные.
Попробовав разные техники, я наконец думаю, что это близко, но не то, что я ищу.
for(let i = 0; i < cols.length; i++){
Object.values(allData.analysis[key]).slice(1).map(val => {
console.info({[cols[i]]: val[i]})
})
}
все данные содержит все данные, включая заголовок
name,age,gender
John Deo,45,male
Mary Jeo,54,female
Saly Meo,55,female
cols содержит только заголовок
Вот что я получил после запуска приведенного выше кода.
То, что у меня есть до сих пор.
Чего я хочу достичь.
Я рад предоставить больше примеров кодов!
Это CSV, из которого вы его получаете?
Да, я загружаю в firebase как csv, но читаю его из json.
это может помочь думать об этом «объекте JSON» как об объекте javascript, потому что 1. это объект javascript, и 2. не существует такой вещи, как объект JSON, JSON - это строка, но как только вы ее проанализируете, вы имеем дело с обычным скучным javascript-объектом
у вас есть образец allData?
Трудно сказать без образца структуры данных, но можно сделать что-то подобное и адаптироваться.
const allData = [
["John Deo", 45, "male"],
["Mary Jeo", 54, "female"],
["Saly Meo", 55, "female"]
];
const data = allData.reduce((accum, curr) => {
let obj = {};
obj.name = curr[0];
obj.age = curr[1];
obj.gender = curr[2];
return [...accum, obj];
}, []);
console.info(data);
Больше ответов для динамических данных, например, вы добавляете дополнительный заголовок
var temporary = [
"name,age,gender,status",
"John Deo,45,male,single",
"Mary Jeo,54,female,married",
"Saly Meo,55,female,married"
];
// for dynamic header
var headers = temporary[0].split(',');
var data = [];
for(var x = 1; x < temporary.length; x++) {
var dataToInsert = {};
// split values to convert to array
var values = temporary[x].split(',');
// loop inside headers
for(var i = 0; i < headers.length; i++) {
var key = headers[i];
// assign values according to match indexes
dataToInsert[key] = values[i];
}
data.push(dataToInsert);
}
console.info(data);
Вы можете использовать функцию
reduce
, чтобы получить желаемый объект.