Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular Rxjs在数组属性上使用最小运算符_Angular_Operators_Min_Rxjs5_Ngrx - Fatal编程技术网

Angular Rxjs在数组属性上使用最小运算符

Angular Rxjs在数组属性上使用最小运算符,angular,operators,min,rxjs5,ngrx,Angular,Operators,Min,Rxjs5,Ngrx,我知道我们可以在数字数组上使用min运算符。但是我如何在具有数字属性的对象数组上使用它呢 var source = Rx.Observable.fromArray([1,3,5,7,9,2,4,6,8]).min(); 这就是文档对它的描述。这将发出1。我该怎么做 var source = Rx.Observable.fromArray([{a: 1, b:"first"},{a: 3, b:"second"},{a: 5, b:"third"}]).min(); 我想通过内部属性值使用mi

我知道我们可以在数字数组上使用min运算符。但是我如何在具有数字属性的对象数组上使用它呢

var source = Rx.Observable.fromArray([1,3,5,7,9,2,4,6,8]).min();
这就是文档对它的描述。这将发出
1
。我该怎么做

var source = Rx.Observable.fromArray([{a: 1, b:"first"},{a: 3, b:"second"},{a: 5, b:"third"}]).min();
我想通过内部属性值使用
min
。因此,比较数组中每个对象中
a
的值并发射该对象

我知道min需要一个比较函数,但我不知道它是否可以在这里使用

我还希望它发射对象,而不是最小属性值

编辑:

因此,我在Angular 4应用程序中使用Ngrx,并尝试在
存储上使用
min
操作符。选择
Observable。出于某种原因,下面的代码,我首先订阅,然后从响应中创建另一个可观察对象,然后使用最小值,但如果我跳过订阅并尝试像下面的代码一样使用最小值操作符,它将失败并发出完整的ClientFacility数组

有人知道发生了什么吗?他们不是都一样吗

这项工作:

this.store.select(fromRoot.getClientFacilitiesArray).take(1).subscribe(res => {
                    Observable.from(res).min<ClientFacility>((a, b) => a.leaders_assigned - b.leaders_assigned)
                        .subscribe(res => console.log(res));
                })
this.store.select(fromRoot.getClientFacilitiesArray).take(1).subscribe(res=>{
可观察的距离(res).min((a,b)=>a.leaders\u分配-b.leaders\u分配)
.subscribe(res=>console.log(res));
})
这失败了:

this.store.select(fromRoot.getClientFacilitiesArray).take(1)
.min<ClientFacility>((a, b) => a.leaders_assigned - b.leaders_assigned)
                        .subscribe(res => console.log(res));
this.store.select(fromRoot.getClientFacilitiesArray).take(1)
.min((a,b)=>a.leaders\u分配-b.leaders\u分配)
.subscribe(res=>console.log(res));

Rx.Observable.fromArray([1,3,5,7,9,2,4,6,8]).min()
是RxJS 4的一个示例,它不适用于RxJS 5

RxJS 5文档的正确位置是,而包含RxJS 4文档

根据,它可以接受compare函数,其行为类似于所接受的函数

例如:

Rx.Observable.from([{a: 1, b:"first"},{a: 3, b:"second"},{a: 5, b:"third"}])
.min((objA, objB) => objA.a - objB.a)
.subscribe(val => console.log(val));

我知道min需要一个比较函数,但我不知道它是否可以在这里使用:为什么不能使用它?你为什么不试试呢?文档中甚至有一个例子正是您想要实现的:I have。比较取两个值。他们会是什么?我想不出来。你能举个例子吗?正如我刚才所说,文档中有一个例子。该函数获取可观察对象发出的两个对象,并对它们进行比较。就像Array.sort()。@JBNizet Wow。。我绞尽脑汁看了一个小时的文件里的另一页。我必须承认Rxjs文档很糟糕。甚至我链接到的例子也不太正确:如果两个人年龄相同,函数应该返回0。你能看一下编辑吗。谢谢你的帮助!不,它们是不同的东西<代码>最小值
处理具有多个值的可观察值并拾取最小值。在第二种情况下,它是一个具有单个值的可观测值,即数组。它可能应该是
this.store.select(fromRoot.getClientFacilitiesArray).take(1).mergeMap(arr=>Observable.from(arr)).min(…)