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 ] |
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 |
Спасибо, но вы value считаете. А я привел json файл из value, и надо по type проверку делать чтоб присвоить нужный ....
|
) какой вопрос, такой ответ...
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) уже отсюда видно, такой подход будет вызывать анальные муки :D |
Классно, сработало, теперь все же как сформировать набор 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 должен быть отличающийся по названию |
зачем кучу варов? если есть объект, ну и передавай вместо варов куски объекта, например, result[1], result[2]...
подожду переводчика... |
Разобрался, спасибо большое!
|
Часовой пояс GMT +3, время: 00:39. |