2015-01-06 5 views
0

그것은 기초의 약간이어야한다. 그러나 나는 2 일의 인터넷 검색을 통하여 그것을 해결할 길을 발견 할 수 없었다. .. 어쨌든, 여기있다. array_1의 요소와 Obj_1의 모든 속성에 대한 일치하는 배열 요소 : 모든 요소가 고유 어디는재산의 접근 재산 Javascript

array_1 = [1,2,3...] 

을 데, ID가 나는

Obj_1 = {2001=[2073,183,11],2011=[101,7,83,179], 2089=[1,11], ...} 

목적을 데, 또한 예입니다 일치하는 경우 일치하는 요소의 ID (array_1)를 Obj_2에 추가하고 일치하는 값 (Obj_1)의 전체 배열을이 속성에 추가합니다. 예. 2001Obj_1 일 때 ID 11이 배열과 일치합니다. 그럼 난 속성을 원하는 11 내가 Obj_1에서 속성 키를 추가하지 않고 다음과 같은 형식의 배열로 저장이 코드를 쓴 끝에

Obj_2 = {11:{2001:[2073,183,11],2089:[1,11]}, 7:{}, 1:{}..} 

에 있도록 값으로 Obj_2에 추가됩니다.

var Obj_2 = {}; 
var key1 = 0; 
for (var i in array_1) { 
Obj_2[array_1[i]] = []; 
for (var x in Obj_1){ 
    for (var m in Obj_1[x]){ 
    if (Obj_1[x][m]==array_1[i]){ 
     key1 = array_1[i]; 
     Obj_2[key1].push(Obj_1[x]); 

           } 
          } 
         } 
         } 

따라서, 나는 지금 무엇입니까 결과는 Obj_2 = {11:[[2073,183,11],[1,11]], 7:[[]], 1:[[]] ...}

가장 큰 문제는 오른쪽에 포인팅

1. how to access the property of a property (especially with respect to the differences between when a property exists and when it doesn't)

2. how to add the value for the property of a property

을 모르는입니다 방향은 매우 높이 평가 될 것이다. 최종주의 사항은 Google Script의 스크립트이지만 아무런 차이가 없다고 생각합니다.

답변

0

작은 Fiddle 여기에 있습니다.

var indexes = [1, 3, 5]; 
var Obj_1 = {'100':[3,183,1],'200':[101,5,2,179],'300':[1,11]}; 
var Obj_2 = { }; 
var needle = 0; 

for (var i in indexes) { 
    needle = indexes[i]; 
    Obj_2['' + needle] = { }; 
    for (var prop_1 in Obj_1) { 
     var haystack = Obj_1[prop_1]; 
     if (haystack.indexOf(needle) >= 0) { 
      Obj_2[needle]['' + prop_1] = haystack; 
     } 
    } 
} 

console.log(Obj_2); 

주의 자바에서 객체와 배열을 조작 할 때 구조는 같지 않지만 항목 액세스 연산자 ([])는 동일합니다.

+0

예, 이상합니다. 다른 곳에서는 이것을 찾을 수 없습니다. 그래서 실제로 속성의 속성의 속성에 대해 obj [] [] []를 사용하고 싶습니다. – AVX

+1

예! 경우에 따라 [] 연산자를 정수 인덱스와 함께 사용하면 Object 프로토 타입으로 Array를 만듭니다. 그 반대. 그래서 나는 인덱스를 문자열 값으로 변환합니다. – Digix