2016-08-10 4 views
2

Rxjs 5.0 사용에 객체, 난 그냥 이름을 지정하고 타일 유지하는 나는 간단한지도 그것을 원하는이결합 배열은 하나의 객체

var data = [ 
    {name: 'abc', title: 'zzz', data: '', id: ''}, 
    {name: 'abc1', title: 'zzz1', data: '', id: ''}, 
    {name: 'abc2', title: 'zzz2', data: '', id: ''}, 
    {name: 'abc3', title: 'zzz3', data: '', id: ''} 
] 

같은 객체를 가지고있다. 그래서 이런 식으로 했어

Rx.Observable.from(data) 
    .map(item => return {name: item.name, title: item.title};) 
    .subscribe(items => console.log('Final OBJ:' + JSON.stringify(items))); 

콘솔에서 항목을 여러 줄로 받고 있습니다. 즉, 구독은 4 번 실행 중입니다. 이름 필드와 제목 필드 만있는 데이터가 포함 된 하나의 완전한 개체로 구독을 한 번만 실행하고 싶습니다. 콘솔

예상 출력은 다음과 같습니다

Final OBJ: [{name: 'abc', title: zzz},{name: 'abc1', title: zzz1},{name: 'abc2', title: zzz2},{name: 'abc3', title: zzz3}] 
+0

예상 출력은 무엇인가? – brk

+0

예상 출력이 추가되었습니다. – coure2011

+0

맵은 배열을 반환하므로 기본적으로 3 개의 소품이있는 객체 배열은 2 개의 소품이있는 객체가있는 배열이됩니다. 단일 객체를 출력으로 사용하려는 경우 맵 대신 축소를 찾고 있습니다. – Shilly

답변

1

을 아이템을 얻을 수 forEach 배열 방법을 사용하면 간단하게 할 수 있습니다 :

Rx.Observable.from(data) 
    .reduce((arr, item, idx, source) => { 
    arr.push({ 
     name: item.name, 
     title: item.title 
    }); 
    return arr; 
    }, []) 
    .subscribe(items => console.log(JSON.stringify(items))); 

JS Bin example

편집 :combineAll이해야 할 것 같습니다 속임수.

Rx.Observable.from(data) 
    .map(item => { 
    return Rx.Observable.of({ 
     name: item.name, 
     title: item.title 
    }); 
    }) 
    .combineAll() 
    .subscribe(items => console.log(JSON.stringify(items))); 

JS Bin Example

0

새로운 배열을 생성한다. 기존의 배열에서

var newArray = []; 
data.forEach(function(item){ 
newArray.push({ 
    name:item.name, 
    title:item.title 
}) 

}) 

console.log(newArray) 

JSFIDDLE