Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于将集合拆分为键控子集合的Lodash函数_Javascript_Arrays_Object_Lodash - Fatal编程技术网

Javascript 用于将集合拆分为键控子集合的Lodash函数

Javascript 用于将集合拆分为键控子集合的Lodash函数,javascript,arrays,object,lodash,Javascript,Arrays,Object,Lodash,下面是我想做的事情的黑盒视图示例 keyMany (arr: any[], cbk: (any) => string[]) given that arr === [e1, e2, e3] (but could be any length); given cbk(e1) -> ['foo']; given cbk(e2) -> ['foo', 'bar']; given cbk(e3) -> ['baz', 'bar']; 然后 为了总结正在发生的事情,第

下面是我想做的事情的黑盒视图示例

keyMany (arr: any[], cbk: (any) => string[])
  given that arr === [e1, e2, e3] (but could be any length);
  given cbk(e1) -> ['foo'];
  given cbk(e2) -> ['foo', 'bar'];
  given cbk(e3) -> ['baz', 'bar'];
然后

为了总结正在发生的事情,第一个参数是一个集合,它以元素为基础应用cbk来确定该元素应该是输出中的哪些键的一部分。一个元素可以是多个输出键集的一部分

请注意:

由于应用于e1的cbk只产生foo,e1只参与输出密钥集foo。 由于应用于e2的cbk会导致foo&bar,因此e2位于输出键集foo&bar中。 同样对于e3,只针对关键点集bar&baz。 理想情况下,输出集合中的e(如果是对象)在引用上等同于输入集合中的e

注意:第一个输入

我的问题是:Lodash中是否已经存在类似的东西?对于这个问题,最受欢迎的答案是带版本号的“是”,或者是“否”

顺便说一句,如果这个行为不容易实现,或者看起来很有价值,我现在已经在Lodash上获得了一个PR,可以添加一个keyMany API:

如果我正确理解了您的问题,那么您希望使用自定义回调函数生成的子数组值中的键构建字典

对于您的数据/输入,一个选项是使用Arrayreduce来实现这一点,详情如下:

//模拟安装数据以支持代码段 变量e1='0',e2='1',e3='2'; //支持代码段的模拟设置函数 变量cbk=arg=>{ 开关兵{ 案例e1:返回['a']; 案例e2:返回['a','b']; 案例e3:返回['b','c']; } } //你的意见 变量输入=[e1、e2、e3]; //获取所需输出的过程 变量输出=输入。还原结果,输入值=>{ //迭代每个输入值的回调结果 cbkinputValue.forEachcbkItem=>{ //获取数组对应的新数组或现有数组 //此回调结果的值,即“a”、“c”等 var callbackResultArray=结果[cbkItem]| |[]; //将当前输入值添加到回调结果数组 callbackResultArray.pushinputValue; //使用回调结果数组更新结果映射 结果[cbkItem]=回调结果数组; }; 返回结果; }, {};
console.logoutput;请适当地编排你的问题的格式,很难判断其中一些是真实代码还是伪代码。Tbh我不理解你的问题我认为这不是一个合适的提问论坛:如果你认为它有用并且应该添加到lodash库中,与回购协议的所有者交谈,我可以看到你已经打开了一个PR,所以,耐心等待社区反馈。如果你需要检查你的代码,你可以继续询问。@JackBashford谢谢你,Valideah,@Denny,你肯定走对了路。这与我的方法非常相似。很高兴我没有疯。我想知道是否有人知道洛达斯是不是开箱即用,也许我们都疯了-
output: {
  foo: [e1, e2],
  bar: [e2, e3],
  baz: [e3]
}