JavaScript能否从现有集合提取单个属性构建新集合?
答案
JavaScript 存在对应的原生实现,无需手动编写循环、手动构建数组,使用数组自带的 map() 方法即可实现和 C# 中 Select() 完全一致的投影效果。
对应给出的C#示例,等价JavaScript代码如下:
// 定义对象数组 const items = [ { name: "Bob", email: "Bob@domain.com", phone: "555-5555" }, { name: "Carl", email: "Carl@domain.com", phone: "555-5555" }, { name: "Ted", email: "Ted@domain.com", phone: "555-5555" } ]; // 提取所有name属性,得到新数组 const names = items.map(i => i.name); // 最终names结果:["Bob", "Carl", "Ted"]
方法说明
map()是JavaScript数组的内置方法,调用后会自动遍历原数组的每一项,将传入的回调函数的返回值按顺序收集,最终返回一个长度和原数组完全一致的新数组,全程不需要手写for/forEach循环,也不需要提前创建空数组再逐个插入元素。- 除了提取单个属性这种简单场景,你也可以在回调函数里编写任意元素转换逻辑,返回自定义结构的结果,和C#
Select()的投影能力完全对齐。
注意小差异:C# 中LINQ的
Select()返回的IEnumerable<T>是延迟执行的,只有真正遍历结果时才会运行投影逻辑;JavaScript的map()是立即执行的,调用完成就会直接返回构建好的完整数组。
内容的提问来源于stack exchange,提问作者Jonathan Wood
相关产品推荐
相关产品推荐

