Javascript 如何分解数组以获得其中某些值的长度
我尝试使用lodash来计算一些数组/对象。 我需要计算具有相同基点的数组的长度。我正在使用lodashJavascript 如何分解数组以获得其中某些值的长度,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
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
的功能吗