首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linq.js获取子项

Linq.js获取子项
EN

Stack Overflow用户
提问于 2015-11-16 16:08:36
回答 1查看 191关注 0票数 0

我使用Linq.js从数组中的JSON对象获取元素子集。我有一个JSON对象数组,如下所示:

代码语言:javascript
复制
[
   {      
      "buy": "Buy",
      "type": "list",
      "total": 0,
      "product": [
         {
            "id": "12345",
            "title": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor.",
            "description": "Lorem ipsum dolor sit amet, consectetuer...",
            "price": "9,95",
            "modelo": [
               {                 
                  "stock": "Y",
                  "color": "red"
               },
               {                  
                  "stock": "Y",
                  "color": "blue"
               }
            ],
            "Valor": 4.571429,
            "Comments": 7
         },
         {
            "id": "78945",
            "title": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor.",
            "description": "Lorem ipsum dolor sit amet, consectetuer...",
            "price": "7,95",
            "modelo": [
               {
                  "stock": "Y",
                  "color": "green"
               },
               {
                  "stock": "Y",
                  "color": "red"
               }
            ],
            "Valor": 7.345256,
            "Comments": 12
         }
         
      ]
   }
]

我可以按价格过滤如下:

代码语言:javascript
复制
var result = Enumerable.From(data)  
    .Where("$.price > 2")
    .Select("$.price")  
    .ToArray();

但是我必须过滤并获得所有ids,这些ids具有红色Linqs.js

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-16 16:30:46

与LINQ:

代码语言:javascript
复制
var data = [ { "buy": "Buy", "type": "list", "total": 0, "product": [ { "id": "12345", "title": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor.", "description": "Lorem ipsum dolor sit amet, consectetuer...", "price": "9,95", "modelo": [ { "stock": "Y", "color": "red" }, { "stock": "Y", "color": "blue" } ], "Valor": 4.571429, "Comments": 7 }, { "id": "78945", "title": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor.", "description": "Lorem ipsum dolor sit amet, consectetuer...", "price": "7,95", "modelo": [ { "stock": "Y", "color": "green" }, { "stock": "Y", "color": "red" } ], "Valor": 7.345256, "Comments": 12 } ] } ],
    result = Enumerable.From(data[0].product)
        .Where("($.modelo).some(function (x) { return x.color === 'red'; })")
        .OrderBy("$.id")
        .Select("$.id")
        .ToArray();

document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/linq.js/2.2.0.2/linq.js"></script>

或者是普通的Javascript,有Array.prototype.filter()Array.prototype.some()Array.prototype.map()

代码语言:javascript
复制
var data = [ { "buy": "Buy", "type": "list", "total": 0, "product": [ { "id": "12345", "title": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor.", "description": "Lorem ipsum dolor sit amet, consectetuer...", "price": "9,95", "modelo": [ { "stock": "Y", "color": "red" }, { "stock": "Y", "color": "blue" } ], "Valor": 4.571429, "Comments": 7 }, { "id": "78945", "title": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor.", "description": "Lorem ipsum dolor sit amet, consectetuer...", "price": "7,95", "modelo": [ { "stock": "Y", "color": "green" }, { "stock": "Y", "color": "red" } ], "Valor": 7.345256, "Comments": 12 } ] } ],
    result = data[0].product.filter(function (a) {
        return a.modelo.some(function (b) {
            return b.color === 'red';
        });
    }).map(function (a) { return a.id; });

document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33739726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档