将数组对象组合成单个对象

combining array objects into single object

本文关键字:对象 单个 组合 数组      更新时间:2023-09-26

使用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}]

您可以简单地使用:

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示例

Edit:似乎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示例

创建一个新的数组。使用forEach数组方法从旧数组

中获取项目
var newArray = [];
data.forEach(function(item){
 newArray.push({
  name:item.name,
  title:item.title
})
})
console.log(newArray)

JSFIDDLE