Используйте объект JavaScript для создания нового объекта для диаграмм Google

1

Я пытаюсь отобразить некоторые данные с использованием ресурсов Google для составления диаграмм. Он хочет получить данные в определенном формате, например:

var data = google.visualization.arrayToDataTable([
    ['Year', 'Sales', 'Expenses'],
    ['2004',  1000,      400],
    ['2005',  1170,      460],
    ['2006',  660,       1120],
    ['2007',  1030,      540]
]);

Из того, что я могу сказать, он хочет, чтобы первая серия содержала ось "x", за которой следовало любое количество элементов, представляющих точки данных оси y.

Мои данные поступают из моего back-end следующим образом:

Изображение 174551

Обновление (код для получения данных диаграммы):

function GetChartData(ni, dn, cn) {
    $.ajax({
        url: '/Dashboard?handler=QualityTests' + '&NodeId=' + ni + '&DomainName=' + dn + '&ComputerName=' + cn,
        success: function (json) {
            google.charts.setOnLoadCallback(drawChart(json))
        }
    })
}

Я хочу averageJitterInMs только averageJitterInMs для оси x и dateTime для оси y на данный момент (в конечном итоге я буду использовать остальную часть данных в другом месте на странице, возможно, для других диаграмм).

Итак, есть ли элегантный способ вытащить только эти значения из моего массива (потенциально сотни элементов массива), чтобы он мог подавать требования к данным диаграммы Google? Под этим я подразумеваю, как мне получить две пары ключ/значение из массива JavaScript, чтобы я мог поместить его в правильном формате, который хочет использовать ресурс диаграммы (см. Прикрепленное изображение)?

Я попытался зациклить массив на стороне клиента, чтобы вытащить эти две пары ключ/значение, однако диаграмма api Google дает мне ошибку:

Не массив

Это даже необходимо или я могу каким-то образом захватить пары ключ/значение программным способом для подачи метода arrayToDataTable?

  • 0
    Не могли бы вы немного прояснить свой вопрос? Что вы имеете в виду "вытащить эти значения из моего массива"? На самом деле вы можете просто получить доступ к любому значению из массива через индекс, как myArray[0] . Покажите нам код, который вы пытаетесь использовать
  • 0
    Конечно ... Я тоже немного обновил вопрос. Из того, что я могу сказать, мне нужно иметь массив, построенный в совершенно ином формате, чем мой исходный массив. Посмотрите на изображение, показывающее массив ключей / значений и ожидаемый формат для диаграммы. Я обновлю вопрос, чтобы включить, как я пытаюсь это тоже .... дай мне несколько.
Показать ещё 5 комментариев
Теги:

1 ответ

2
Лучший ответ

Вы можете построить любой массив из того, что у вас есть. Я сделал фиктивные данные, чтобы показать вам, как вы могли бы достичь того, чего хотите.

Здесь у нас есть array с двумя параметрами, которые мы хотим выбрать (value1, value2).

Затем мы делаем карту над массивом и присваиваем результат resultArray.

На карте мы извлекаем value1 и value2 из каждого элемента, используя деструктурирование ES6.

Теперь у нас есть массив массивов.

const array = [
	{
		value1: 'sadfsadf',
		value2: 'asdasdas',
		extra: 123123
	},
	{
		value1: 'sadfasfsadsadf',
		value2: 'asdasdas',
		extra: 123123123
	},
	{
		value1: 'eg',
		value2: 'asdssdas',
		extra: 124
	},
	{
		value1: 'sadfsadf',
		value2: 'sd',
		extra: 123123
	},
	{
		value1: 'sf',
		value2: 'sf',
		extra: 123123
	}
];

let resultArray = array.map(e => {
	let {value1, value2} = e;
	return [value1, value2];
});

console.log(resultArray);
  • 0
    Это выглядит хорошо. Однако один вопрос: если мои исходные данные (одно из числовых значений) отображаются в виде строки, можно ли их преобразовать в число? Учитывая ваш пример, представьте, что если «123123» было буквально «123123», можете ли вы преобразовать тип при построении массива?
  • 1
    В JS преобразование в число происходит путем добавления + . Т.е. +'123' === 123 .
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню