08.02.2019, 15:13
|
Аспирант
|
|
Регистрация: 24.08.2018
Сообщений: 30
|
|
Json парсинг
Есть json файл (длина изначально не известна):
var data = [
{
"type":1,
"date":"2018-01-17 11:00:00",
"name":"Petrov"
},
{
"type":1,
"date":"2018-01-17 12:00:00",
"name":"Ivanov"
},
{
"type":2,
"date":"2018-01-17 11:00:00",
"name":"Vasiliev"
},
{
"type":2,
"date":"2018-01-17 12:00:00",
"name":"Zaycev"
}....
+ есть json из значений (количество значений равно количеству типов):
{
"value":1
},
{
"value":2
}
Нужно составить массив из значений для типа = 1, типа = 2 через запятую и т.д. (всего 15 типов, но какие из 15 будут неизвестно!) + дополнить значением, т.е. вот что должно получиться на выходе.
-- для типа 1
var new_par_1 = [
names: ["Petrov", "Ivanov"] ,
dates: ["2018-01-17 11:00:00", "2018-01-17 12:00:00"],
values: 1
]
, //ввод разделяителя
-- для типа 2
var new_par_2 = [
names: ["Vasiliev", "Zaycev"] ,
dates: ["2018-01-17 11:00:00", "2018-01-17 12:00:00"],
values: 2
]
Последний раз редактировалось Asew, 08.02.2019 в 15:15.
|
|
08.02.2019, 15:50
|
|
Профессор
|
|
Регистрация: 08.11.2017
Сообщений: 641
|
|
let data = [
{
"type": 1,
"date": "2018-01-17 11:00:00",
"name": "Petrov"
},
{
"type": 1,
"date": "2018-01-17 12:00:00",
"name": "Ivanov"
},
{
"type": 2,
"date": "2018-01-17 11:00:00",
"name": "Vasiliev"
},
{
"type": 2,
"date": "2018-01-17 12:00:00",
"name": "Zaycev"
}
]
let result = data.reduce((p, c, i, a) => {
!p[c.type] && (p[c.type] = {
names: [],
dates: [],
values: 0
})
p[c.type].names.push(c.name)
p[c.type].dates.push(c.date)
p[c.type].values++
return p
}, {})
// перебрать
Object.entries(result).forEach(([key, value]) => console.log(key, value))
и
var new_par_1 = [
names: ["Petrov", "Ivanov"]...
Так не может быть, те, в массиве не может быть key:value, может быть только value
|
|
08.02.2019, 16:00
|
Аспирант
|
|
Регистрация: 24.08.2018
Сообщений: 30
|
|
Спасибо, но вы value считаете. А я привел json файл из value, и надо по type проверку делать чтоб присвоить нужный ....
|
|
08.02.2019, 16:22
|
|
Профессор
|
|
Регистрация: 08.11.2017
Сообщений: 641
|
|
) какой вопрос, такой ответ...
let data = [
{
"type": 1,
"date": "2018-01-17 11:00:00",
"name": "Petrov"
},
{
"type": 1,
"date": "2018-01-17 12:00:00",
"name": "Ivanov"
},
{
"type": 2,
"date": "2018-01-17 11:00:00",
"name": "Vasiliev"
},
{
"type": 2,
"date": "2018-01-17 12:00:00",
"name": "Zaycev"
}
]
let values = [
{
value: 1,
},
{
value: 2,
}
]
let result = data.reduce((p, c, i, a) => {
!p[c.type] && (p[c.type] = {
names: [],
dates: [],
values: 0
})
p[c.type].names.push(c.name)
p[c.type].dates.push(c.date)
return p
}, {})
// перебрать
Object.entries(result).forEach(([key, value], i) => result[key].values = values[i] ? values[i].value : null)
console.log(result)
уже отсюда видно, такой подход будет вызывать анальные муки
|
|
08.02.2019, 16:40
|
Аспирант
|
|
Регистрация: 24.08.2018
Сообщений: 30
|
|
Классно, сработало, теперь все же как сформировать набор var-ов, нужно для графика на самом деле..
let data = [
{
"type": 1,
"date": "2018-01-17 11:00:00",
"name": "Petrov"
},
{
"type": 1,
"date": "2018-01-17 12:00:00",
"name": "Ivanov"
},
{
"type": 2,
"date": "2018-01-17 11:00:00",
"name": "Vasiliev"
},
{
"type": 2,
"date": "2018-01-17 12:00:00",
"name": "Zaycev"
}
]
let values = [
{
value: 1,
},
{
value: 2,
}
]
let result = data.reduce((p, c, i, a) => {
!p[c.type] && (p[c.type] = {
labels : [],
datasets : [
{
fillColor : "rgba(220,220,220,0.5)",
strokeColor : 0,
pointColor : 0,
pointStrokeColor : "#fff",
data : [],
title : "описание"
}
]
})
p[c.type].labels.push(c.name)
p[c.type].data.push(c.date)
return p
}, {})
// перебрать
Object.entries(result).forEach(([key, value], i) => result[key].pointColor = values[i] ? values[i].value : null)
console.log(result)
Таким образом нужно сформировать пары х/y разделенные через запятую и блок let должен быть отличающийся по названию
Последний раз редактировалось Asew, 08.02.2019 в 16:57.
|
|
08.02.2019, 16:56
|
|
Профессор
|
|
Регистрация: 08.11.2017
Сообщений: 641
|
|
зачем кучу варов? если есть объект, ну и передавай вместо варов куски объекта, например, result[1], result[2]...
подожду переводчика...
|
|
08.02.2019, 18:10
|
Аспирант
|
|
Регистрация: 24.08.2018
Сообщений: 30
|
|
Разобрался, спасибо большое!
|
|
|
|