평준화하려는 플랫 데이터 세트가 있습니다. 데이터 집합이 기존 상태이며 원본을 변경할 수 없으므로 더 나은 데이터 구조를 정의하는 것은 선택 사항이 아닙니다. 나는 "정상화"하고 데이터를 재구성 할 수 있었지만 행 수가 증가하기 시작하면 얼마나 효율적인지 확신 할 수 없었습니다. 여기에 내가 그냥 여기 자바 스크립트에서 기존 데이터 세트를 정규화하는 가장 효율적인 방법
이상적인 출력{ArticleID: "ABC123",
Status: "Scheduled",
Articles: {
ArticleID: "ABC123",
Region: US,
PubTypeID: "EO",
PubType: "Europe Order",
Created: "01/01/2013",
Scheduled: "03/02/2013"
},{
ArticleID: "ABC234",
Region: US,
PubTypeID: "EO",
PubType: "Europe Order",
Created: "01/01/2013",
Scheduled: "03/02/2013"
}
}
$(document).ready(function(){
var data = new Array(
{
ArticleID: "ABC123",
Region: 'US',
PubTypeID: "EO",
PubType: "Europe Order",
Created: "01/01/2013",
Scheduled: "03/02/2013"
},
{
ArticleID: "ABC123",
Region: 'RU',
PubTypeID: "EO",
PubType: "Europe Order",
Created: "01/01/2013",
Scheduled: "04/02/2013"
},
{
ArticleID: "ABC763",
Region: 'EO',
PubTypeID: "EO",
PubType: "Europe Order",
Created: "01/01/2013",
Scheduled: "03/02/2013"
},
{
ArticleID: "ABC498",
Region: 'JP',
PubTypeID: "EN",
PubType: "Europe Order",
Created: "01/01/2013",
Scheduled: "03/02/2013"
}
);
var Articles = new Array();
var pID = "";
var cID = "";
$.each(data, function(i, item) {
cID = item.ArticleID;
var entries = new Array();
if(cID != pID)
{
$.each(data, function(j, item2) {
var entry = new Object();
if(cID === item2.ArticleID)
{
entry.ArticlID = item2.ArticleID;
entry.Region = item2.Region;
entry.PubTypeID = item2.PubTypeID
entries.push(entry);
}
});
Articles.push({ArtilceID: cID, Entries: entries})
pID = cID
}
});
alert(Articles.length);
alert(Articles[0].Entries.length);
});
은 귀하가 정확하게이 데이터에 액세스/처리해야하는 방법을 알려 주실 때까지 도움이 될 수 없습니다. 한 사람의 우아한 "zomg this is perfect"는 다른 사람의 "쓰레기 같은 것" –
@MarcB이 경우 우리는 O (n^2) 해결책에 대해 이야기하고 있습니다. 그래서 OP가 할 수있는 말은 공정하다고 생각합니다. 확실히 큰 데이터 세트의 경우 훨씬 더 잘 수행됩니다. – Pointy
당신은 정교 할 수 있습니까? O (n^2)와 OP는 무엇입니까? – user1735894