【发布时间】:2016-02-14 06:34:03
【问题描述】:
不幸的是,我没有 JQuery 或 Underscore,只有纯 javascript(兼容 IE9)。
我想要 LINQ 功能中的 SelectMany() 等效项。
// SelectMany flattens it to just a list of phone numbers.
IEnumerable<PhoneNumber> phoneNumbers = people.SelectMany(p => p.PhoneNumbers);
我可以吗?
编辑:
感谢回答,我得到了这个工作:
var petOwners =
[
{
Name: "Higa, Sidney", Pets: ["Scruffy", "Sam"]
},
{
Name: "Ashkenazi, Ronen", Pets: ["Walker", "Sugar"]
},
{
Name: "Price, Vernette", Pets: ["Scratches", "Diesel"]
},
];
function property(key){return function(x){return x[key];}}
function flatten(a,b){return a.concat(b);}
var allPets = petOwners.map(property("Pets")).reduce(flatten,[]);
console.log(petOwners[0].Pets[0]);
console.log(allPets.length); // 6
var allPets2 = petOwners.map(function(p){ return p.Pets; }).reduce(function(a, b){ return a.concat(b); },[]); // all in one line
console.log(allPets2.length); // 6
【问题讨论】:
-
这一点也不不幸。纯 JavaScript 是惊人的。没有上下文,很难理解您在这里想要实现的目标。
-
@SterlingArcher,看看答案有多具体。没有太多可能的答案,最好的答案简短明了。
标签: javascript c#