javascript - Select distinct objects from nested arrays using linq.js - Stack Overflow

Let's say I have the following data,data: {variations: [{steps: [{ Name: "Crawl", Status

Let's say I have the following data,

data: {
    variations: [{
        steps: [
            { Name: "Crawl", Status: "Complete" },
            { Name: "Walk", Status: "InProgress" }
        ]
    },{
        steps: [
            { Name: "Crawl", Status: "Complete" },
            { Name: "Walk", Status: "Complete" },
            { Name: "Run", Status: "NotStarted" }
        ]
    }]
}

How would I arrive at this set of data using linq.js? The resulting set of data is the unique steps across all variations. Notice, the duplicate Crawl is not in the result.

[
    { Name: "Crawl", Status: "Complete" },
    { Name: "Walk", Status: "InProgress" },
    { Name: "Walk", Status: "Complete" },
    { Name: "Run", Status: "NotStarted" }
]

I have tried many binations of Select and SelectMany, but I'm having no luck.

Let's say I have the following data,

data: {
    variations: [{
        steps: [
            { Name: "Crawl", Status: "Complete" },
            { Name: "Walk", Status: "InProgress" }
        ]
    },{
        steps: [
            { Name: "Crawl", Status: "Complete" },
            { Name: "Walk", Status: "Complete" },
            { Name: "Run", Status: "NotStarted" }
        ]
    }]
}

How would I arrive at this set of data using linq.js? The resulting set of data is the unique steps across all variations. Notice, the duplicate Crawl is not in the result.

[
    { Name: "Crawl", Status: "Complete" },
    { Name: "Walk", Status: "InProgress" },
    { Name: "Walk", Status: "Complete" },
    { Name: "Run", Status: "NotStarted" }
]

I have tried many binations of Select and SelectMany, but I'm having no luck.

Share Improve this question asked Apr 7, 2016 at 9:29 Scott LinScott Lin 1,5621 gold badge19 silver badges31 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 4

First you'll need to flatten to an array of steps. Once you have that, you'll have to pick out the distinct copies of the steps. Since you're dealing with objects, you'll need to provide a parer. I would just bine the properties that make it distinct into a string.

var query = Enumerable.From(result.data.variations)
  .SelectMany("$.steps")
  .Distinct("[$.Name, $.Status].join(',')")
  .ToArray();

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745667607a4639210.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信