【问题标题】:LINQ WHERE clause equivalent in javascriptLINQ WHERE 子句等效于 javascript
【发布时间】:2019-07-16 21:05:25
【问题描述】:

我希望从我的 javascript 数组 `lstObj' 中提取信息,如下所示:

[
  {
    "DealerId": "1",
    "Type": "Apple,Orange"
  },
  {
    "DealerId": "2",
    "Type": "Mango"
  },
  {
    "DealerId": "3",
    "Type": "Mango"
  }
]

我想检查是否有 Type = Mango 且 DealerID not = 2 的商品。 在 C# linq 中,我会这样做:

if(lstObj.Any(x=>x.Type.Split(',').Contains("Mango") && x.DealerID != 2))
{
      //Do something
}

如何使用 javascript 实现相同的功能?

【问题讨论】:

    标签: javascript arrays linq


    【解决方案1】:

    这应该可以。如果没有项,则返回空数组,否则返回项。

    let result = lstObj.filter(dealer =>  dealer.Type.split(',').includes('Mango') && dealer.DealerId != 2);
    

    let lstObj = [
      {
        "DealerId": "1",
        "Type": "Apple,Orange"
      },
      {
        "DealerId": "2",
        "Type": "Mango"
      },
      {
        "DealerId": "3",
        "Type": "Mango"
      }
    ]
    
    let result = lstObj.filter(dealer => dealer.Type.split(',').includes('Mango') && dealer.DealerId != 2)
    
    console.log(result)

    【讨论】:

    • 我添加了完整的代码 sn-p 以便您查看。
    【解决方案2】:

    你可以使用some:

    var result= array.some(function (item) {
        return  item.Type.split(",").inlcudes("Mango") && item.DealerID != 2;
    });
    

    【讨论】:

    • 过滤器有什么区别?
    • Some 等价于 Any,Filter 等价于 Where。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 2018-01-02
    相关资源
    最近更新 更多