【发布时间】:2019-02-20 20:23:51
【问题描述】:
我正在尝试使用 lodash 来计算一些数组/对象。
我需要计算具有相同基点的数组的长度。我正在使用 lodash countBy 和 property。
我是这样做的:
let passengersGoingNorth = 0;
let passengersGoingEast = 0;
let passengersGoingSouth = 0;
let passengersGoingWest = 0;
...
({
N: passengersGoingNorth,
S: passengersGoingSouth,
W: passengersGoingWest,
E: passengersGoingEast,
} = countBy(passengersData, property('cardinalpoint')));
它返回具有相同基点的每个元素的长度。例如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 个元素,它们来自 pickup: 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。如果pickup包含0或1,我需要知道基点是N。
有什么想法吗?
【问题讨论】:
-
1和passengersGoingNorthPickup1: passengersGoingNorthPickup的目的和预期结果是什么?您能否在问题中包含完整的输入数组和预期结果?见stackoeverflow.com/help/mcve -
如果有
3乘客去West和2 有pickup: 1,这是一个计数。所以passengersGoingNorthPickup === 2@guest271314 -
很少有使用 lodash 的经验。你的意思是
cardinalPoint === "W" && pickup === 1?还是只有pickup === 1?唯一的预期结果是输入数组中与属性名称和值匹配的对象的.length? -
嗯...阅读您上一个问题的其他答案怎么样?那你根本不会有这个问题。或者你没问过this
-
请张贴
filterByCardinalPoint的作用
标签: javascript ecmascript-6 lodash