Thomas Frank 씨가 배열과 객체에 SQL과 유사한 문법의 질의를 하고, 데이터를 추출할 수 있는 SQLike 스크립트를 작성했습니다.
질의는 다음과 같이 할 수 있습니다.
[code:js]
SQLike.q(
    {
        Select: ['firstName','|count|','firstName','|sum|','salary','|min|','salary','|max|','salary','|avg|','salary'],
        From: dataArray,
        GroupBy: ['firstName'],
        Having: function(){return this.count_firstName>1},
        OrderBy: ['sum_salary','|desc|']
   }
)
결과는 다음과 같이 반환됩니다.
[code:js]
[{"firstName":"Stuart", "count_firstName":3, "sum_salary":180000, "min_salary":41000, "max_salary":90000, "avg_salary":60000}, {"firstName":"Vicki", "count_firstName":2, "sum_salary":163000, "min_salary":79000, "max_salary":84000, "avg_salary":81500}]
이 모든 과정은 메모리 상에서 일어나기 때문에 웹 서비스로서 비슷한 기능을 제공하는 YQL과는 조금 다릅니다.
SQL 질의를 할 수 있는 다른 방법으로는 Chris Pietschmann씨가 작성한 LINQ to JavaScript가 있습니다.
[code:js]
var myList = [
  {FirstName:"Chris",LastName:"Pearson"},
  {FirstName:"Kate",LastName:"Johnson"},
  {FirstName:"Josh",LastName:"Sutherland"},
  {FirstName:"John",LastName:"Ronald"},
  {FirstName:"Steve",LastName:"Pinkerton"}
];
var exampleArray = JSLINQ(myList)
                   .Where(function(item){ return item.FirstName == "Chris"; })
                   .OrderBy(function(item) { return item.FirstName; })
                   .Select(function(item){ return item.FirstName; });
개인적으로는 LINQ의 문법이 더 마음에 듭니다. 여러분은 어떠세요?

from Two JS solutions to run SQL-like statements on Arrays and Objects
Posted by 행복한고니 트랙백 2 : 댓글 0

댓글을 달아 주세요