Как получить значение в паре ключ/значение в JavaScript - API Google Trends

Я использую API тенденций Google, чтобы в конечном итоге экспортировать данные тенденций в файл Excel. Проблема в том, что я хочу извлечь ТОЛЬКО форматированное время и значение для моих ключевых слов.

JS не моя сильная сторона. Как вытащить только эти параметры? Или есть способ назначить эти параметры паре словаря ключ-значение?

Спасибо.

вывод json

{
  "default": {
     "timelineData":[
       {
         "time":"1511629200",
         "formattedTime":"Nov 25, 2017 at 12:00 PM",
         "formattedAxisTime":"Nov 25 at 12:00 PM",
         "value":[44],
         "formattedValue":["44"]
       },
       {
         "time":"1511632800",
         "formattedTime":"Nov 25, 2017 at 1:00 PM",
         "formattedAxisTime":"Nov 25 at 1:00 PM",
         "value":[41],
         "formattedValue":["41"]
       }
     ]
   }
}

код

'use strict';

const googleTrends = require('google-trends-api');


var animals = ['hamsters', 'puppies'];


for (var key in animals) {

    console.log(animals[key]);

    googleTrends.interestOverTime({
        keyword: key,
        startTime: new Date(Date.now() - (167.9 * 60 * 60 * 1000)),
        granularTimeResolution: true,
    }, function(err, results) {

        if (err) 
            console.log('oh no error!', err);
        else 
            console.log(results);
        console.log("--------------------------")
    });
}

person BorangeOrange1337    schedule 03.12.2017    source источник
comment
Ваш объект JSON также имеет ошибочный дополнительный }   -  person Glenn    schedule 03.12.2017


Ответы (2)


Извлечение необходимых данных в объект для функционального следования шаблону пары ключ/значение с проверкой существования:

function extractTimeAndValue(data) {
  var timelineData = (data && data.default && data.default.timelineData) || [];

  return timelineData.reduce(function(timeAndValueObject, timeline) {
    var time = timeline.formattedTime;
    var value = timeline.value;

    return Object.assign(
     {},
     timeAndValueObject,
     time && value ? {[time]: value} : {}
    );
  }, {});
}
person antihero989    schedule 03.12.2017

Это может помочь вам начать с извлечения того, что вы хотите:

theStuffIWant = [];

for (each of output.default.timelineData) {
  theStuffIWant.push({time: each.formattedTime, value: each.value[0]});
}

console.log(theStuffIWant);

// now you should have an array of the data you want.

Обратите внимание, что значения выглядят так, как будто они находятся в массиве с одним значением, поэтому необходимо использовать индекс [0]. Также обратите внимание, что переменная output должна быть заменена любой переменной, содержащей ваши данные JSON.

person Glenn    schedule 03.12.2017
comment
получение ошибки типа: невозможно прочитать свойство «по умолчанию» неопределенного. - person BorangeOrange1337; 03.12.2017