Получить все значения, которые имеют одного и того же брата в объекте JavaScript - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь получить все startTimes , которые соответствуют определенному dayID из этого файла json, извлекаемого из API. Таким образом, результатом будет 870, 900, 930, 960, 990, 1020, 1050 от 20191106, а затем группа startTime из 20191107 и т. Д. Я предполагаю некоторый цикл, но возникают проблемы с определением уникального идентификатора.

{
"Availability": [
        {
            "dayID": "20191106",
            "routeID": "313",
            "startTime": "870"
        },
        {
            "dayID": "20191106",
            "routeID": "313",
            "startTime": "900"
        },
        {
            "dayID": "20191106",
            "routeID": "313",
            "startTime": "930"
        },
        {
            "dayID": "20191106",
            "routeID": "313",
            "startTime": "960"
        },
        {
            "dayID": "20191106",
            "routeID": "313",
            "startTime": "990"
        },
        {
            "dayID": "20191106",
            "routeID": "313",
            "startTime": "1020"
        },
        {
            "dayID": "20191106",
            "routeID": "313",
            "startTime": "1050"
        },
        {
            "dayID": "20191107",
            "routeID": "313",
            "startTime": "360"
        },
        {
            "dayID": "20191107",
            "routeID": "313",
            "startTime": "390"
        },
        {
            "dayID": "20191107",
            "routeID": "313",
            "startTime": "420"
        },
        {
            "dayID": "20191108",
            "routeID": "313",
            "startTime": "360"
        },
        {
            "dayID": "20191108",
            "routeID": "313",
            "startTime": "390"
        },
        {
            "dayID": "20191108",
            "routeID": "313",
            "startTime": "420"
        },
        {
            "dayID": "20191108",
            "routeID": "313",
            "startTime": "450"
        }
    ]
}

Ответы [ 2 ]

1 голос
/ 06 ноября 2019

Вы можете использовать редуктор для группировки по dayID:

const data = {
"Availability": [
        {
            "dayID": "20191106",
            "routeID": "313",
            "startTime": "870"
        },
        {
            "dayID": "20191106",
            "routeID": "313",
            "startTime": "900"
        },
        {
            "dayID": "20191106",
            "routeID": "313",
            "startTime": "930"
        },
        {
            "dayID": "20191106",
            "routeID": "313",
            "startTime": "960"
        },
        {
            "dayID": "20191106",
            "routeID": "313",
            "startTime": "990"
        },
        {
            "dayID": "20191106",
            "routeID": "313",
            "startTime": "1020"
        },
        {
            "dayID": "20191106",
            "routeID": "313",
            "startTime": "1050"
        },
        {
            "dayID": "20191107",
            "routeID": "313",
            "startTime": "360"
        },
        {
            "dayID": "20191107",
            "routeID": "313",
            "startTime": "390"
        },
        {
            "dayID": "20191107",
            "routeID": "313",
            "startTime": "420"
        },
        {
            "dayID": "20191108",
            "routeID": "313",
            "startTime": "360"
        },
        {
            "dayID": "20191108",
            "routeID": "313",
            "startTime": "390"
        },
        {
            "dayID": "20191108",
            "routeID": "313",
            "startTime": "420"
        },
        {
            "dayID": "20191108",
            "routeID": "313",
            "startTime": "450"
        }
    ]
}


console.log(data.Availability.reduce((acc, curr) => {
  if(acc[curr.dayID]){
    acc[curr.dayID].push(curr.startTime);
  } else {
    acc[curr.dayID]= [curr.startTime];
  }
  return acc;
}, {}))
1 голос
/ 06 ноября 2019

Вы можете использовать .filter и .map

const jsonData = {
"Availability": [
        {
            "dayID": "20191106",
            "routeID": "313",
            "startTime": "870"
        },
        {
            "dayID": "20191106",
            "routeID": "313",
            "startTime": "900"
        },
        {
            "dayID": "20191106",
            "routeID": "313",
            "startTime": "930"
        },
        {
            "dayID": "20191106",
            "routeID": "313",
            "startTime": "960"
        },
        {
            "dayID": "20191106",
            "routeID": "313",
            "startTime": "990"
        },
        {
            "dayID": "20191106",
            "routeID": "313",
            "startTime": "1020"
        },
        {
            "dayID": "20191106",
            "routeID": "313",
            "startTime": "1050"
        },
        {
            "dayID": "20191107",
            "routeID": "313",
            "startTime": "360"
        },
        {
            "dayID": "20191107",
            "routeID": "313",
            "startTime": "390"
        },
        {
            "dayID": "20191107",
            "routeID": "313",
            "startTime": "420"
        },
        {
            "dayID": "20191108",
            "routeID": "313",
            "startTime": "360"
        },
        {
            "dayID": "20191108",
            "routeID": "313",
            "startTime": "390"
        },
        {
            "dayID": "20191108",
            "routeID": "313",
            "startTime": "420"
        },
        {
            "dayID": "20191108",
            "routeID": "313",
            "startTime": "450"
        }
    ]
}
const dayID = "20191106"
const startTimes = jsonData.Availability.filter(a => a.dayID === dayID).map(a => a.startTime)
console.log(startTimes)

Вот код Jsfiddle, выполняющий код. https://jsfiddle.net/gho8b930/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...