NET问答: JS 中有 LINQ SelectMany 方法的等价实现吗?

咨询区

  • toddmo

很遗憾,我在 Underscore 和 Jquery 中都没有找到对等实现,我的要求很简单,只要能做到 IE9 兼容即可。

我的 SelectMany 实现如下:


// SelectMany flattens it to just a list of phone numbers.
IEnumerable<PhoneNumber> phoneNumbers = people.SelectMany(p => p.PhoneNumbers);

回答区

  • Sagi

基于简单起见,你可以使用 Array 提供的 reduce 方法,来看一下这个二维数组。


var arr = [[1,2],[3, 4]];
arr.reduce(function(a, b){ return a.concat(b); }, []);
=>  [1,2,3,4]var arr = [{ name: "name1", phoneNumbers : [5551111, 5552222]},{ name: "name2",phoneNumbers : [5553333] }];
arr.map(function(p){ return p.phoneNumbers; }).reduce(function(a, b){ return a.concat(b); }, [])
=>  [5551111, 5552222, 5553333]

不过在 es6 中,Array 新增了 flatMap 方法,这就和 SelectMany 强对等了,原理很简单,用map将所有元素打散,然后将每一个被打散的结果插入到新的array中,下面是它的 TypeScript 签名。


function flatMap<A, B>(f: (value: A) => B[]): B[]

接下来就可以flat你的 phoneNumbers 啦。


arr.flatMap(a => a.phoneNumbers);
  • Cem Tuğut

其实非常简单,你可以在 es6 中自定义个 SelectMany 方法,定义如下:


Array.prototype.SelectMany = function (keyGetter) {return this.map(x=>keyGetter(x)).reduce((a, b) => a.concat(b)); 
}

然后就是测试数据啦。

var juices=[{key:"apple",data:[1,2,3]},{key:"banana",data:[4,5,6]},{key:"orange",data:[7,8,9]}];

到这里就可以做到和 LINQ 中的 SelectMany 一样的使用方法啦。


juices.SelectMany(x=>x.data)

点评区

感觉现在的 es 外加 typescript ,花哨的写法比 C# 的 LINQ 复杂并强大多了,已经花里胡哨的看不懂了。。。大家认为呢?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/301128.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java前补零工具类_java生成编码工具类,不足补0

~~~~~ 小小工具类&#xff01;你值得拥有简单粗暴&#xff0c;直接上代码import java.text.NumberFormat;/*** author: Abner* description: 编码工具类* date: Created on 2018/5/24*/public class SnUtils {/*** 生成 0000000000001 格式* param value 传入的数值* param min…

掌握神经网络,入门深度学习

从无人驾驶汽车到AlphaGo战胜人类&#xff0c;机器学习成为了当下最热门的技术。而机器学习中一种重要的方法就是深度学习。人工智能、机器学习与深度学习的关系深度学习的动机在于建立、模拟人脑进行分析学习的神经网络&#xff0c;整个过程就是使用多个处理层对数据进行高层抽…

麦克学摇滚(引用)

这支伟大的乐队开始于1987&#xff0c;在丹麦Arhus的一所中学&#xff0c;出现了一支业余性的乐队&#xff1b;Jascha Richter---一为对词曲创作极有天分&#xff0c;并且歌喉绝美的小伙子&#xff0c;与他的两位好友 —— Kare Wanscher (鼓手) 、Mikkel Lentz (吉它手)&#…

[旧博客]Python 第一次

决定学习Python&#xff0c;发现其需要安装的东西很小&#xff0c;只需要在官方网站下载和15MB左右的安装包&#xff0c;Python for windows。安装完毕就双击IDE快捷方式就打开IDE了。 你很发现IDE好像很面熟&#xff0c;对啊&#xff0c;Python原生的IDE就和一个windows笔记本…

罗马数字转换成数字java_C趣味编程百例(31)将阿拉伯数字转换为罗马数字

95.将阿拉伯数字转换为罗马数字将大于0小于1000的阿拉伯数字转换为罗马数字。阿拉伯数字与罗马数字的对应关系如下&#xff1a;*问题分析与算法设计题目中给出了阿拉伯数字与罗马数字的对应关系&#xff0c;题中的数字转换实际上就是查表翻译。即将整数的百、十、个位依次从整数…

NET问答: using 和 await using 有什么不同?

咨询区 Justin Lessard&#xff1a;我注意到在某些情况下&#xff0c;visual studio 经常推荐我这么做。await using var disposable new Disposable(); // Do something来替代下面的这种写法using var disposable new Disposable(); // Do something请问 using 和 await usi…

人造流星这种生日礼物,你有过吗?现在国外有了

全世界只有3.14 % 的人关注了数据与算法之美数据汪列举了不同“级别”的富豪是如何庆生的&#xff0c;大家看看自己处于什么水平。三流土豪的孩子过生日&#xff0c;看的是蜡烛...二流土豪的孩子过生日&#xff0c;看的是烟花...那么一流土豪的孩子看的又是什么呢&#xff1f;现…

Concurrent connection limit

这几天在做IIS 6上Web Service (WSE 2.0)的性能测试。在这个过程中陆续发现和解决了一些问题。 其中有一个问题比较有意思。我和项目组的同事发现&#xff0c;不论我们用C#写的模拟客户端用多少并发量来连接Web Service&#xff0c;服务器端监测到的并发连接数&#xff08;性能…

Material Master

02-03 03&#xff1a; 物料主的定义&#xff1a;相同的物料应该是同一个物料号。 在PP放面我们主要关心的是工厂 。 定义公司后在公司下面在定义工厂。 spro配置的时候我们可以在、后勤、物料管理、物料、创建&#xff1b; 后勤、生产、物料、创建 两种方式都可以进入物料创建…

java密码学原型算法_java密码学原型算法实现——双线性对.pdf

java密码学原型算法实现——双线性对Java 密码学原型算法实现——双线性对1、背景介绍如何使用jPBC 库进行双线性群初始化&#xff0c;包括&#xff1a;(1)质数阶双线性群(Prime-Order Bilinear Groups)&#xff1b;(2)合数阶双线性群(Composite-Order Bilinear Groups)&#x…

用啥Selenium?! .NET程序员就用自家的Playwright for .NET

提到用于Web应用程序自动化测试的工具&#xff0c;大家肯定第一个想到的就是Selenium。可以说&#xff0c;Selenium已经成为以编程方式自动化浏览器的事实标准。但是&#xff0c;Selenium作为老牌工具&#xff0c;也存在一些缺点&#xff0c;比如不支持Shadow DOM &#xff0c;…

每日一笑 | 一些关于集合的知识

全世界只有3.14 % 的人关注了数据与算法之美&#xff08;图源网络&#xff0c;侵权删&#xff09;

Digest

一场倾盆大雨。站立着面对这场大雨吧&#xff01;让它的钢铁般的光芒刺穿你。你在那想把你冲走的雨水中飘浮&#xff0c;但你还是要坚持&#xff0c;昂首屹立&#xff0c;等待那即将来临的无穷无尽的阳光的照耀。 转载于:https://www.cnblogs.com/bcpl/archive/2005/05/18/1578…

iOS之NSString

做了不少时间的iOS开发了&#xff0c;现在在阅读官方文档&#xff0c;特意整理出来&#xff0c;没任何技术含量&#xff0c;纯粹是笔记形式&#xff0c;希望对自己对大家有些帮助。 首先&#xff0c;要理解NSString需要学习下字符编码&#xff08;ASCii&#xff0c;Unicode&…

java调用js查询mongo_mongodb操作之使用javaScript实现多表关联查询

一、数据控制mongodb操作数据量控制&#xff0c;千万控制好&#xff0c;不要因为操作的数据量过多而导致失败。演示一下发生此类错误的错误提示&#xff1a;二、多表关联查询实现/*声明变量bridge,用来记录两个集合所连接的桥梁。相当于sql语句中的Join on语句&#xff0c;on后…

ABP Framework 研习社经验总结(6.28-7.2)

ABP Framework 研习社经验总结&#xff08;6.28-7.2&#xff09;研习社初衷在翻译 《实现领域驱动设计》—— 基于 ABP Framework 实现领域驱动设计实用指南 时&#xff0c;因为DDD理论和实践的宽泛性&#xff0c;不同公司、不同行业、不同项目实现程度不同&#xff0c;觉得有必…

2005.5.21

早上&#xff1a; 4&#xff1a;00电话打来&#xff0c;叫我们去。 我们5&#xff1a;30才起床。 我没有意识到婆婆去世了。上午&#xff1a; 送婆婆到火葬场的车排起了长龙。 一路上&#xff0c;放炮仗&#xff0c;撒纸钱&#xff0c;撒纸元宝。到了火葬场&…

一篇万字长文读懂微软PDB、SourceLink——.net core之nuget 包调试

序言在大前年&#xff0c;为了说服框架组采用Nuget包的形式分发框架类库&#xff0c;我费了老鼻子的劲也没有取得成功&#xff0c;其中最致命的一个问题是&#xff0c;nuget包不能获得源码调试级的支持&#xff0c;在分发和包的管理形式上其比其他方案都优秀。最后折中的选择是…

IIC及OLED实验

I2C (Inter-Integrated Circuit): I2C 是一种用于在芯片之间进行短距离数字通信的串行通信协议。它允许多个设备通过两根导线&#xff08;一根数据线 SDA 和一根时钟线 SCL&#xff09;进行通信。I2C 常常用于嵌入式系统中连接传感器、存储器、显示屏和其他外设。 数据线和时钟…

放弃winform的窗体吧,改用html作界面,桌面应用程序UI的新的开发方式。

做过很多winform项目&#xff0c;都为winform控件头疼不已。想实现一些漂亮的样子总是很难。我这里列举几个缺点&#xff1a; 1.winform控件大多是 绝对布局 &#xff0c;你需要给出准确的坐标。那么在实现居中效果就会很难。 2.学习成本&#xff0c;也了解各个控件的结构&…