Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Распарсть объект по символу (https://javascript.ru/forum/misc/76509-rasparst-obekt-po-simvolu.html)

CryNet 18.01.2019 15:55

Распарсть объект по символу
 
По API получаю такой объект:
2019-01-10: 3669.5825
2019-01-11: 3660.9583
2019-01-12: 3658.6725
2019-01-13: 3540.1583
2019-01-14: 3706.1725
2019-01-15: 3604.1333
2019-01-16: 3630.2567
2019-01-17: 3665.41
Как можно его распарсить, чтобы даты были отдельно, а сумма после : отдельно?

Для строк-то есть метод split(), но мне он не поможет, как я понял, даже есть через JSON.stringify() преобразовать в строку.

Teamur 18.01.2019 16:41

var obj={'2019-01-10' : 3669.5825, '2019-01-11' : 3660.9583};
var keys=Object.keys(obj);
var values=Object.values(obj);

Nexus 19.01.2019 12:28

var res=`2019-01-10: 3669.5825
2019-01-11: 3660.9583
2019-01-12: 3658.6725
2019-01-13: 3540.1583
2019-01-14: 3706.1725
2019-01-15: 3604.1333
2019-01-16: 3630.2567
2019-01-17: 3665.41
`;
res=res.split(/\r?\n+?/g).reduce(function(res,str){
	if(!str)
		return res;
	
	str=str.split(':').map(function(str){
		return str.trim();
	});
	if(str.length!==2)
		return res;
	
	
	res[0].push(str[0]);
	res[1].push(str[1]);
	
	
	return res;
},[[],[]]);

console.log(res);

CryNet 19.01.2019 15:46

Цитата:

Сообщение от Teamur (Сообщение 502278)
var obj={'2019-01-10' : 3669.5825, '2019-01-11' : 3660.9583};
var keys=Object.keys(obj);
var values=Object.values(obj);

Как всё просто... Спасибо большое. Я почему-то не думал, что в JS есть готовое решение.

CryNet 19.01.2019 15:47

Цитата:

Сообщение от Nexus (Сообщение 502328)
var res=`2019-01-10: 3669.5825
2019-01-11: 3660.9583
2019-01-12: 3658.6725
2019-01-13: 3540.1583
2019-01-14: 3706.1725
2019-01-15: 3604.1333
2019-01-16: 3630.2567
2019-01-17: 3665.41
`;
res=res.split(/\r?\n+?/g).reduce(function(res,str){
	if(!str)
		return res;
	
	str=str.split(':').map(function(str){
		return str.trim();
	});
	if(str.length!==2)
		return res;
	
	
	res[0].push(str[0]);
	res[1].push(str[1]);
	
	
	return res;
},[[],[]]);

console.log(res);

Спасибо за вариант решения :)


Часовой пояс GMT +3, время: 05:32.