
26.10.2020, 09:30
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 778
|
|
Собрать массив
Привет. Ajax возвращает такой json
[{"sum":"40.00","title":"Еда"},{"sum":"40.00","title":"Еда"},{"sum":"100.00","title":"Акции"},{"sum":"1000.00","title":"Зарплата"},{"sum":"100.00","title":"Акции"}]
Подскажите как перебрать это дело,что бы получить массив следующего вида:
[{name:'Еда',data:[40.00,40.00]},{name:'Акции',data:[100,1000]}...]
|
|

26.10.2020, 11:38
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,144
|
|
ureech,
<script>
let ar = [{"sum":"40.00","title":"Еда"},{"sum":"40.00","title":"Еда"},{"sum":"100.00","title":"Акции"},{"sum":"1000.00","title":"Зарплата"},{"sum":"100.00","title":"Акции"}]
let keys = {}, out = [];
ar.forEach(({title: name, sum : data}) => name in keys ? keys[name].push(data) : (data = keys[name]=[data], out.push({name, data})));
document.write(`<pre>${JSON.stringify(out, "", 1)}</pre>`)
</script>
|
|

26.10.2020, 12:28
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 778
|
|
Спасибо,Так то всё верно,но не заводится), так как в моём скрипте name и data должны быть без кавычек. Они переменные.То есть так
name:"Еда",data:["40.00","40.00","40.00","40.00","40.00"]...
|
|

26.10.2020, 12:39
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,144
|
|
Сообщение от ureech
|
так как в моём скрипте name и data должны быть без кавычек.
|
бред какой-то.
|
|

26.10.2020, 12:50
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,144
|
|
ureech,
переменные можно использовать, а вот кавычки будут всегда.
<script>
let name = "it_is_name", data = "it_is_data";
let ar = [{"sum":"40.00","title":"Еда"},{"sum":"40.00","title":"Еда"},{"sum":"100.00","title":"Акции"},{"sum":"1000.00","title":"Зарплата"},{"sum":"100.00","title":"Акции"}]
let keys = {}, out = [];
ar.forEach(({title, sum}) => title in keys ? keys[title].push(sum) : (sum = keys[title]=[sum], out.push({[name] : title, [data] : sum})));
document.write(`<pre>${JSON.stringify(out, "", 1)}</pre>`)
</script>
|
|

26.10.2020, 12:54
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,144
|
|
ureech,
может как-то правильнее сформулировать проблему?
если нужны числа, а не строки добавьте + строка 4
<script>
let ar = [{"sum":"40.00","title":"Еда"},{"sum":"40.00","title":"Еда"},{"sum":"100.00","title":"Акции"},{"sum":"1000.00","title":"Зарплата"},{"sum":"100.00","title":"Акции"}]
let keys = {}, out = [];
ar.forEach(({title: name, sum : data}) => name in keys ? keys[name].push(+data) : (data = keys[name]=[+data], out.push({name, data})));
document.write(`<pre>${JSON.stringify(out, "", 1)}</pre>`)
</script>
|
|

26.10.2020, 13:00
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,144
|
|
ureech,
что не так?
<!DOCTYPE html>
<html>
<head>
<title>Highcharts Tutorial</title>
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js">
</script>
<script src = "https://code.highcharts.com/highcharts.js"></script>
</head>
<body>
<div id = "container" style = "width: 550px; height: 400px; margin: 0 auto"></div>
<script language = "JavaScript">
$(document).ready(function() {
var title = {
text: 'Monthly Average Temperature'
};
var subtitle = {
text: 'Source: WorldClimate.com'
};
var xAxis = {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
};
var yAxis = {
title: {
text: 'Temperature (\xB0C)'
},
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}]
};
var tooltip = {
valueSuffix: '\xB0C'
}
var legend = {
layout: 'vertical',
align: 'right',
verticalAlign: 'middle',
borderWidth: 0
};
var ar = [{"sum":"40.00","title":"Еда"},{"sum":"40.00","title":"Еда"},{"sum":"100.00","title":"Акции"},{"sum":"1000.00","title":"Зарплата"},{"sum":"100.00","title":"Акции"}]
var keys = {}, series = [];
ar.forEach(({title: name, sum : data}) => name in keys ? keys[name].push(+data) : (data = keys[name]=[+data], series.push({name, data})));
var json = {};
json.title = title;
json.subtitle = subtitle;
json.xAxis = xAxis;
json.yAxis = yAxis;
json.tooltip = tooltip;
json.legend = legend;
json.series = series;
$('#container').highcharts(json);
});
</script>
</body>
</html>
|
|

26.10.2020, 13:14
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 778
|
|
Сообщение от рони
|
может как-то правильнее сформулировать проблему?
|
Сори.Упустил).
Завелась,родная). Благодарю. Пойду разбираться).
|
|

07.11.2020, 17:50
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 778
|
|
Приветствую. Нашёл неувязки у себя. Помогите ещё). Суть в том, что нет привязки данных массива series[] и categories[]. Если у меня например в series[
[
{
"name": "Молоко",
"data": [
40,
30,
80,
40,
40
]
},
{
"name": "Бензин",
"data": [
2000,
1500,
2000
]
}
]
А в
categories[
"2020-10-06",
"2020-10-21",
"2020-10-31",
"2020-11-02",
"2020-11-03",
"2020-11-04"
]
То и оба графика начинаются с первого числа и их координаты оси Х соответствует датам по порядку, а не тем которые реально им соответствуют. Нужно как то связать это дело. Может есть какие то свойства или методы у данной библиотеки? Но я не разобрался.
Последний раз редактировалось ureech, 07.11.2020 в 17:52.
|
|
|
|