2017-11-14 2 views
0

나는 열이라고 불리는 배열을 가지고 있으며, 각 배열에 대해 0에서 6 사이의 색인을 붙일 수있는 배열을 가지고 있습니다. 각 날 배열에는 시간과 일 집합이 있습니다. 시간대 중 일부 시간은 동일하므로 동일한 값을 그룹화하려고합니다. 예 :다차원 배열을 반복하고 공용 데이터를 가져 오는 것

open[] -> [0] -> {open: 12:00, close: 16:00, Monday} 
      [1] -> {open: 12:00, close: 16:00, tuesday} 

어떻게 이러한 값을 그룹화하여 시간 및 모든 요일과 관련된 배열을 가질 수 있습니까? 또는 요즘을 표시하는 가장 좋은 방법은 이번에 있습니다.

open[] -> [0] -> {open: 12:00, close: 16:00, monday} 
      [1] -> {open: 12:00, close: 16:00, tuesday} 
      [1] -> {open: 14:00, close: 16:00, sunday} 

이 어떤 도움에 감사드립니다 :

이 개방형 배열도 같은 예컨대을이 arent 시간을 포함 할 수 있습니다!

+0

야 :이 작업을 수행하는 예를 들면 :입니까? [연구 노력이 얼마나 필요합니까?] (https://meta.stackoverflow.com/questions/261592/how-much-research-effort-is-expected-of-stack-overflow-users)를 검토하십시오. 스택 오버플로는 코딩 서비스가 아닙니다. 게시하기 전에 문제를 조사하고 코드를 직접 작성하는 것이 좋습니다. 특정 항목에 얽매이면 돌아와서 [Minimal, Complete, Verifiable example] (https://stackoverflow.com/help/mcve) 및 시도한 내용을 요약하면 도움이됩니다. – cramopy

+0

@cramopy 일 arr의 각 인덱스를 반복 해보았는데 배열에 처음 추가 할 때, 두 번째로 그것이 있는지 여부를 확인합니다. 그렇지 않으면 일을 추가하지 않으면 새 배열을 만듭니다. 그게 내가 두 번째 배열을 확인하는 방법에 문제가 생길 때 ... – John

+0

이것을 확인, https://stackoverflow.com/questions/40774697/how-to-group-array-of-objects-by-key – EnriqueDev

답변

0

귀하의 요구 사항을 100 % 이해하고 있는지는 확실하지 않지만 귀하가 말한 내용을 토대로 동일 영업일 기준으로 요일을 그룹화하고자한다고 생각하는 경우 & 번 마감 시간입니다. 이렇게하려면 열려있는 & 시간을 연결하여 "키"를 만든 다음이 키를 사용하여 개체의 그룹 배열을 조회 할 수 있습니다. 당신은 이미 자신을 시도 무엇

//Set up an array of randomized test data 
 
var initTestData = function(){ 
 
    var testReferenceData = { 
 
    openTimes: ["08:00","08:30","09:00"], 
 
    closeTimes: ["05:00","05:30"], 
 
    daysOfWeek: ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"] 
 
    } 
 
    var data = []; 
 
    for(var d=0; d<testReferenceData.daysOfWeek.length; ++d){ 
 
    var randOpen = Math.floor(Math.random() * testReferenceData.openTimes.length), 
 
     randClose = Math.floor(Math.random() * testReferenceData.closeTimes.length); 
 
    var day = { 
 
     day: testReferenceData.daysOfWeek[d], 
 
     open: testReferenceData.openTimes[randOpen], 
 
     close: testReferenceData.closeTimes[randClose] 
 
    }; 
 
    data.push(day); 
 
    } 
 
    return data; 
 
} 
 

 
//Group days by times 
 
var groupByTime = function(days){ 
 
    var groups = {}; 
 
    for(var d=0; d<days.length; ++d){ 
 
    //Create a key by concatenating the start & end times of a day 
 
    var key = days[d].open+"_"+days[d].close; 
 
    //If this is the first one, initialize an array 
 
    if(!groups[key]){ 
 
     groups[key] = []; 
 
    } 
 
    //Add the day to the group by its key 
 
    groups[key].push(days[d]); 
 
    } 
 
    //Return an array of our groups 
 
    return Object.values(groups); 
 
} 
 

 
var open = initTestData(); 
 
console.log("Initial array", open); 
 
var grouped = groupByTime(open); 
 
console.log("Grouped array", grouped);

관련 문제