Javascript 如何分解数组以获得其中某些值的长度

Javascript 如何分解数组以获得其中某些值的长度,javascript,ecmascript-6,lodash,Javascript,Ecmascript 6,Lodash,我尝试使用lodash来计算一些数组/对象。 我需要计算具有相同基点的数组的长度。我正在使用lodashcountBy和属性 我是这样做的: let passengersGoingNorth = 0; let passengersGoingEast = 0; let passengersGoingSouth = 0; let passengersGoingWest = 0; ... ({ N: passengersGoingNorth, S: passengers

我尝试使用lodash来计算一些数组/对象。 我需要计算具有相同基点的数组的长度。我正在使用lodash
countBy
属性

我是这样做的:

let passengersGoingNorth = 0;
let passengersGoingEast = 0;
let passengersGoingSouth = 0;
let passengersGoingWest = 0;
...

   ({
      N: passengersGoingNorth,
      S: passengersGoingSouth,
      W: passengersGoingWest,
      E: passengersGoingEast,
    } = countBy(passengersData, property('cardinalpoint')));
它返回具有相同基点的每个元素的长度。Fir示例
N
返回
2

现在,我需要对名为
pickup
的属性执行相同的操作,该属性仅随
0
1
一起提供。但我无法用正确的逻辑来完成:

let passengersGoingNorthPickup = 0;
let passengersGoingEastPickup = 0;
let passengersGoingSouthPickup = 0;
let passengersGoingWestPickup = 0;

   ({
      1: passengersGoingNorthPickup,
      passengersGoingSouthPickup,
      passengersGoingWestPickup,
      passengersGoingEastPickup,
    } = countBy(passengersData, property('pickup')));
我总共有5个元素,它们是拾取:1,而我上面的方式不起作用。 在对象中

这就是阵列的原理:

[
{
  "cardinalpoint": "E"
  "pickup": 1,,
  "id": 6,
  "phone": "99998888",
},
{
  "cardinalpoint": "N"
  "pickup": 0,,
  "id": 1,
  "phone": "777777",
},
]
更新 在我这样做之前,它可以工作,但是函数被调用的次数太多了,但这就是我的想法:

passengersWithPickup = this.filterByCardinalPoint(
      passengersData,
      'pickup',
      1,
    );

    passengersGoingNorthPickup = this.filterByCardinalPoint(
      passengersWithPickup,
      'cardinalpoint',
      'N',
    ).length;
    passengersGoingSouthPickup = this.filterByCardinalPoint(
      passengersWithPickup,
      'cardinalpoint',
      'S',
    ).length;
    passengersGoingWestPickup = this.filterByCardinalPoint(
      passengersWithPickup,
      'cardinalpoint',
      'W',
    ).length;
    passengersGoingEastPickup = this.filterByCardinalPoint(
      passengersWithPickup,
      'cardinalpoint',
      'E',
    ).length;
因此,我想对这两件事使用相同的逻辑。但我需要根据基点确定皮卡是0还是1。就像我需要知道如果皮卡包含
0
1
,基点是否为
N


有什么想法吗?

更改条件,因此只有带有truthy(在本例中不是0)
拾取值的项目才会在其
基数值下计数

如果在分解结构之前查看对象,您将看到
pickup
值为0的项目在0键下计数

const{countBy,property}=\;
让旅客北上,旅客南下,旅客西进,旅客东进;
const passengersData=[{“基数”:“E”,“皮卡”:1,“id”:6,“电话”:“99998888”},{“基数”:“N”,“皮卡”:0,“id”:1,“电话”:“777777”}];
({
N:passengersGoingNorth=0,
S:passengersGoingSouth=0,
W:passengersGoingWest=0,
E:passengersGoingEast=0
}=countBy(passengersData,o=>o.pickup&&o.cardinalpoint));
控制台.日志(乘客北行、乘客南行、乘客西行、乘客东行);//0,0,0,1

1:passengersgoingnorthpick
进行
1
passengersgoingnorthpick
的目的和预期结果是什么?你能在问题中包括完整的输入数组和预期结果吗?如有
3名乘客前往
West
,2名乘客有
pick:1
,则为计数。因此
旅客北上取货===2
@guest271314几乎没有使用lodash的经验。你的意思是
基点===“W”和&pickup===1
?还是仅拾取===1
?唯一的预期结果是输入数组中与属性名称和值匹配的对象的
.length
。。。阅读你上一个问题的其他答案怎么样?那你就不会有这个问题了。或者你没有问过请发布
filterByCardinalPoint
的功能吗