2017-03-10 5 views
-2

도와주세요. 다음과 같은 개체가 있습니다 :이 개체에서 데이터를 가져 오는 방법은 무엇입니까?

data: { 
     offersMonday: [ 
       { 
       "name": "name1", 
       "description" "description 1" 
       }, 
       { 
       "name": "name2", 
       "description": "description 2" 
       } 
      ], 
     offersTuesday: [ 
     { 
       "name": "name1", 
       "description" "description 1" 
       }, 
       { 
       "name": "name2", 
       "description": "description 2" 
       } 
      ], 
      offersWednesday: [ 
      { 
       "name": "name1", 
       "description" "description 1" 
       }, 
       { 
       "name": "name2", 
       "description": "description 2" 
       } 
      ] 
} 

각 개체의 인스턴스 아래에 설명을 가져와야합니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

filter() 기능을 사용해야합니까?

감사합니다.

편집 : 나는 하나의 변수에 모두 넣어야합니다. 따라서 offersMonday[0].description + offersTuesday[0].description과 같은 작업을 수행하는 것은 좋지 않습니다.

+0

이 어떻게 당신이 그것을 꺼내 돌봐 데이터를 원하는가? –

+0

편집하겠습니다. 잠시만 기다려주세요. –

+0

이 '설명'데이터를 얻으려면 무엇을 의미합니까, 어떤 형식의 형식을 원하십니까? 개체 또는 배열? –

답변

0

당신은 이런 식으로 뭔가를 시도 할 수 :

data.offersMonday[0].description 

특정 설명을 읽을 수 있습니다. 또는 모든 설명을 얻기 위해 다음과 같은 : 주요 개체 위에

var data = { 
 
     offersMonday: [ 
 
       { 
 
       "name": "name1", 
 
       "description": "description 1" 
 
       }, 
 
       { 
 
       "name": "name2", 
 
       "description": "description 2" 
 
       } 
 
      ], 
 
     offersTuesday: [ 
 
     { 
 
       "name": "name1", 
 
       "description" : "description 1" 
 
       }, 
 
       { 
 
       "name": "name2", 
 
       "description": "description 2" 
 
       } 
 
      ], 
 
      offersWednesday: [ 
 
      { 
 
       "name": "name1", 
 
       "description" : "description 1" 
 
       }, 
 
       { 
 
       "name": "name2", 
 
       "description": "description 2" 
 
       } 
 
      ] 
 
} 
 

 
var descriptions = []; 
 
for(var key in data){ 
 
    data[key].forEach(function(obj){ 
 
     descriptions.push(obj.description); 
 
    }); 
 
} 
 

 
console.log(descriptions);

+0

모든 변수를 하나의 변수로 가져와야합니다. –

+0

@ eric.dummy 내가 추가 한 스 니펫은 어떻습니까? – Christos

+0

잠시만 기다려주십시오. –

0
var descs=[]; 
for(key in data){ 
    descs=descs.concat(data[key].map(el=>el.description)); 
} 
console.log(descs);//array 
console.log(descs.join(","));//string 

루프, 모든 배열 elems 설명 값을 얻을하고 descs 배열에 추가합니다.

+0

이것은 작동하지 않습니다 .. –

0

당신은 그런 일을 시도 할 수 : 제대로이 포맷을 일부 :마르크 누락 것처럼

var descriptions = []; 
for(prop in data){ 
    data[prop].forEach(function(offer){ 
     descriptions.push(offer.description); 
    } 
} 
+0

이것은 다른 답변과 동일하고 분명히 중복입니다 ... –

+0

글쎄, 나는 같은 시간에 그것을 쓰고 있었고 나는 그것을 보지 못했습니다! –

0

가 보이는, 내가 아래에 입력 데이터를 포맷했습니다

다음
const input = { 
data: { 
    offersMonday: [{ 
     name: "name1", 
     description: "description 1" 
    }, { 
     name: "name2", 
     description: "description 2" 
    }], 
    offersTuesday: [{ 
     name: "name1", 
     description: "description 1" 
    }, { 
     name: "name2", 
     description: "description 2" 
    }], 
    offersWednesday: [{ 
     name: "name1", 
     description: "description 1" 
    }, { 
     name: "name2", 
     description: "description 2" 
    }] 
} 
} 

는이다 기능은 객체를 통해 이동하여 필요한 것을 가져옵니다. 그들은 유효한 JS가 아니므로 마크를 제거했습니다. (나는 JSON에서 이것을 가지고 있다고 가정합니다). JSON 객체가 들어 오면 여하튼 따옴표를 제거합니다.

나를 위해 효과가있는 해결책은 다음과 같습니다. 형식이 원하는 것이 아닌지 알려주세요.

function groupDescriptions(input) { 
    let aggregatedArray = []; 
    const data = input.data; 

    for (day in data) { 
     const innerArray = data[day]; 
     innerArray.forEach((item) => { 
      aggregatedArray.push(item.description); 
     }) 

    } 
    return aggregatedArray; 
    } 

aggregatedArray 반환이 :

[ 'description 1', 
'description 2', 
'description 1', 
'description 2', 
'description 1', 
'description 2' ] 
관련 문제