当前位置: 首页 > 知识库问答 >
问题:

路过。群发到!。PartialOK似乎给出了错误的结果

卜瀚漠
2023-03-14

这是一个JavaScript对象

const obj = {a: [{ id: 1 }, {id: 1}, {id: 2}, {id: 3}], b: [{ id: 4 }, {id: 5}, {id: 5}, {id: 6}] };

下面是一个代码,它通过正确地对项目进行分组。两个数组中的每个数组中的id。a和对象。b

const res1 = _.map(obj, x => _.groupBy(x, 'id'));

结果是

[
 {
  1: [{id: 1}, {id: 1}],
  2: [{id: 2}],
  3: [{id: 3}]
 },
 {
  4: [{id: 4}],
  5: [{id: 5}, {id: 5}],
  6: [{id: 6}]
 }
]

然而,lambda实际上只是的部分应用。groupBy的第二个参数,设置为'id',所以我认为这样应该可以工作,

const res2 = _.map(obj, _.partialRight(_.groupBy, 'id'));

或者至少是这样的

const res2 = _.map(obj, _.partialRight(_.groupBy, x => x.id));

然而,它们都不起作用,都导致了这个对象:

[
 {
   undefined: [{id: 1}, {id: 1}, {id: 2}, {id: 3}]
 },
 {
   undefined: [{id: 4}, {id: 5}, {id: 5}, {id: 6}]
 }
]

为什么呢?这是洛达斯的一个bug吗?还是因为JavaScript的工作方式?在后一种情况下,发生了什么?

我已经找到了一个现有的问题自我答案,它为上面的代码提供了一个解决方案:

const res2 = _.map(obj, _.ary(_.partialRight(_.groupBy, 'id'), 1));

然而,我的问题的一部分仍然没有回答:为什么我需要使用_. ary?为什么我最初的尝试不起作用?

共有1个答案

卓云
2023-03-14

_方法仍然可以接受比新函数预期的更多的参数。如果一个函数有两个参数,有一个或两个部分应用,那么任何额外的参数有效地“碰撞”部分应用的参数:

js prettyprint-override">function print(a, b) {
  console.log(a, b);
}

const f = _.partialRight(print, "world");
const g = _.partialRight(print, "hello", "world");

f("hi");                    // hi world
g();                        // hello world

f("hi", "universe");        // hi universe
g("greetings");             // greetings world
g("greetings", "universe"); // greetings universe
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"></script>
 类似资料:
  • 我正在创建一个应用程序,用户在其中输入 7-10 个数值。然后,条目用于一个相当分层的公式,该公式向用户返回结果。两个值给我带来了麻烦,并产生了一个我无法弄清楚的数字。 从微调器中选择一个条目,因为只有4种可能的选择: 此选项不仅用于等式,还用于确定是否需要额外的信息。 获得IHCValue: 如果用户从此下拉列表中选择“2”,则下一个活动将要求 ,也用于等式的一部分: 获取FISHEntry:

  • 我试图在一个函数上工作,它接受一个值,并在斐波那契序列中输出号。我有一个循环函数,它似乎是这样工作的: 我正在尝试一个使用比奈公式的版本,如下所述: 这似乎适用于的低值,但当输入一个大于72的数字时会中断。。。我怀疑这与函数,但此处的文档没有说明其精度级别。。。这是否是或者我的函数是否有其他问题? 出于测试目的,我使用以下For循环:

  • 问题内容: 根据Wolfram Mathematica: cos(50) = 0.6427876096865394 ; 但是这段Java代码: 给出 0.9649660284921133 。 有什么问题吗? 问题答案: 期望参数以弧度为单位。这将返回您需要的结果:

  • 我正试图使Filepond工作,但CSS中的这一行似乎破坏了它-在ul选择器中。 我试着对页面的整个部分进行核化,直到Filepond起作用,将目标锁定在css上,最后在ul{}中找到前面提到的行。我可以把其他的东西都抹掉,只留下那条线,而文件孔仍然坏了,所以我肯定这是问题所在,但我不知道是怎么回事。 我尝试使用Chrome的检查器功能查看运行时页面源代码,但在那里找不到溢出。 然后我使用Note

  • 我在摆弄弹力靴,但每向前走一步,就会让我后退两步。 我将我的简单应用程序与Springboot连接在一起,但我没有得到这个错误: 还有这一点: 我不用任何数据库。应用程序非常简单。下面是主要的类: 下面是其他两个类和: 就是这样。尽管它可能很简单。 下面是文件结构以及build.gradle文件内容: 能有人请帮助我让这个小程序运行,指出我在正确的方向,以解决这个问题? 事先好心谢谢你。

  • 我正在为db2创建一个存储过程。但是它给出了一个错误 SQL错误[42601]:在“SS_token_BAK”之后发现意外的标记“END-OF-STATEMENT”。预期的标记可能包括:“END IF”。.SQLCODE=-104,SQLSTATE=42601,DRIVER=4.23.42。 以下是我的存储过程。 是否有人面临此类问题。任何这方面的帮助将不胜感激。