gpt4 book ai didi

javascript - 使用 Ramda 将两个数组与两个不同的键组合在一起

转载 作者:行者123 更新时间:2023-11-30 07:34:49 24 4
gpt4 key购买 nike

我是 Ramda 和柯里化(Currying)的新手,但想组合两个不同的数组。鉴于:

var array1 = [
{_id: 0, x: 10},
{_id: 1, x: 30}
];

var array2 = [
{UUID: 0, y: 20},
{UUID: 1, y: 60}
];

我想在 _id === UUID 处加入他们,得到这样的东西:

var result = [
{_id: 0, UUID: 0, x: 10, y: 20},
{_id: 1, UUID: 1, x: 30, y: 60}
];

我查看了文档,whereintersectionmerge 似乎是可以使用的。但是 intersectionmerge 需要相同的键。 where 似乎是门票,但我仍然不确定如何告诉它我希望两个不同的键具有相同的值。

所以我认为我可以使用 forEachfindequals 中的一个或多个来镜像 POJS 方式。这是我的想法(到目前为止没有 intersectionwhere 用法):

import r from 'ramda';
var result =
r.forEach(
r.find(
r.equals(
r.prop('UUID', r._),
r.prop('_id', r._)
), data, metadata);

我被困在如何检查两个数组中的单独键(UUID_id),同时保持函数符号。我相信我做的一切都是错误的,但我的想法很乱,我将首先尝试一种简单的 Javascript 方法。

最佳答案

可以使用 R.indexBy , R.mergeWith , 和 R.merge :

//  propMerge :: String -> String -> Array Object -> Array Object -> Array Object
var propMerge = R.curry(function(k1, k2, xs1, xs2) {
return R.values(R.mergeWith(R.merge,
R.indexBy(R.prop(k1), xs1),
R.indexBy(R.prop(k2), xs2)));
});

关于javascript - 使用 Ramda 将两个数组与两个不同的键组合在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37597163/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com