2012-12-22 1 views
2

브라우저에서 클라이언트 측의 cakephp 함수 Set :: combine 및 Set :: classicExtract와 동일한 기능을 수행하는 JavaScript 함수가 이미 있습니까? http://book.cakephp.org/2.0/en/core-utility-libraries/set.htmlcakephp는 자바 스크립트에서 Set :: combine와 같은 기능을 수행합니다.

그래서이 배열 가져올 수 : 형식 예를 들어

a = { 
    2 : 'Alfred', 
    12 : 'Albert' 
} 

Set::combine(a, '{n}.User.id', '{n}.User.name') 

같은 기능을

a = [ 
    { 
     'User' : { 
      'id' : 2, 
      'group_id' : 1, 
      'name' : 'Alfred' 
     } 
    }, 
    { 
     'User' : { 
      'id' : 12, 
      'group_id' : 2, 
      'name' : 'Albert' 
     } 
    } 
] 

합니다. 그러나이 간단한 예제뿐만 아니라, 나는 cakephp와 비슷한 방식으로 그것을 할 수있는 라이브러리 나 뭔가를 찾고 있습니다. 미리 감사드립니다.

답변

1

아니요. Javascript에는 이와 같은 기능이 없습니다.

이러한 기능을 직접 사용하거나 Underscore.js과 같은 라이브러리를 사용하면 이와 같은 많은 유틸리티를 제공 할 수 있습니다. "나는 단지 간단한 예제 실현

result = {} 
a.forEach(function(item) { 
    result[item.User.id] = item.User.name; 
}) 

하지만 요점은 자바 스크립트 콜백 일류 기능을 지원하고, 같은 마법 단순히 필요가 없습니다 :

0

이 순수 자바 스크립트 매우 간단합니다 {n}. 사용자 이름 ".

+1

필요가 없다면 이와 같은 것들은 존재하지 않을 것입니다. '{n} .User.Order.Product.name'과 같은 복잡한 구조체에서'Hash :: extract()'를 사용하면'foreach'를 여러 번하는 것보다 훨씬 쉽습니다. 변수가 실제로 존재하는지 확인할 필요도 없습니다. 'foreach'가 DRY가 아닌 각기 다른 구조로 이루어져야 할 필요가있을 때 어떤 구조에서도 작동합니다. – dogmatic69

+0

@ dogmatic69 : "필요가 없다면 존재하지 않을 것"- 나는이 논리를 구입하지 않습니다. 컴퓨팅에는 특히 쓸모가없는 것들이 많이 있지만 여전히 존재합니다. – georg

1

내가 사랑은 CakePHP의 해시 클래스에 JS 동등한를 보려면,하지만 슬프게도 인터넷 검색의 시간 후, 난 아무것도 찾을 수 없습니다 ... Underscore.js 및 Sugar.js 모두 약간의 필터링 기능을 가지고 있지만, 둘 다 다차원 배열에서 작동하지 않는 것 같습니다. 케이크에서

나는 종종

Hash::extract($users, '{n}.User.Posts.{n}.Comments.{n}[published=1]'); 

사람이 수행하는 JS 라이브러리를 알고있는 경우, 팁을위한 매우 감사하게 될 것입니다 ... 이런 식으로 일을.


편집 : (그들이 사용하는 구문의 예입니다) JSON 데이터의 쿼리 이런 종류의 수 몇 가지 옵션을 발견 이후이 있습니다. (XPath를하여 더 많은 영감) (CSS 선택기에 의해 더 영감)

  • json:select()

    • JSPath
      .automobiles{.maker === "Honda" && .year > 2009}.model


    • .automobiles .maker:val("Honda") .model

    • JSONPath
      $.automobiles[?(@.maker='Honda')].model

    저는 JSPath가 가장 멋지다고 생각합니다. 그래서 AngularJS + CakePHP 앱과 통합하려고 시도 할 것입니다.

  • 관련 문제