Как совместить два списка объекта в одном списке с Rxjs - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть 2 разных списка объектов, и я хочу объединить их для примера:

listObj1 = [{name:'bob 1'}, {name:'bob 2'}]
listObj2 = [{pseudo:'Bob Razowski'}, {pseudo:'sponge bob'}]

result = [
   {name:'bob 1', pseudo:'Bob Razowski}
   {name:'bob 2', pseudo:'sponge bob'}
]

Могу ли я сделать это с помощью rxjs и как или если у вас есть лучшее решение, дайте мне знать

const characters = [];
const name$ = Observable.from(this.nameList)
                    .map(item => {
                        return {'name': item};
                    })

const pseudo$ = Observable.from(this.pseudoList)
                    .map(item => {
                        return {'pseudo': item};
                    })
Observable.zip(name$, pseudo$).subscribe(result => {
                        let char= {};
                        if(result.length > 1) {
                            char['name'] = result[0];
                            char['pseudo'] = result[1];
                            characters.push(char)
                        }
                    });              

Я начал что-то подобное, но когда я вижу результат, я могу сделать это без rxjs.Мой вопрос больше, если для этого существует другой оператор.

спасибо

1 Ответ

0 голосов
/ 27 декабря 2018

Ну, вы можете сделать это с помощью RxJS, но нет очевидной причины для этого, глядя на ваш фрагмент кода.Одной из причин сделать это реактивно было бы то, что у вас были действительно длинные списки и вы хотели, чтобы комбинация происходила в (гипотетических) нескольких потоках.Но в JavaScript это не очень практично, поэтому for...of или Array.map - правильный выбор для такого рода задач.

В любом случае, решение RxJS будет выглядеть так:

zip(
    from(listOb1),
    from(listObj2)
).pipe(
    map(([one, two]) => Object.assign({}, one, two)),
    toArray()
)

Конвертируйте оба списка в наблюдаемые потоки с помощью from, затем zip их вместе и map каждой пары на новый объект с помощью Object.assign.Соберите предметы с помощью toArray и готово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...