JavaScript中的LINQ WHERE子句等价物

9

我想从我的JavaScript数组`lstObj'中提取信息,它看起来像这样:

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

我想确认是否有一个项目的类型为Mango且DealerID不等于2。

在C#的Linq中,我会这样做:

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

如何使用JavaScript来实现相同的功能?
2个回答

13

这应该就可以了。如果没有项,它将返回一个空数组,否则它将返回项目。

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)


1
我添加了完整的代码片段,这样你就可以查看它了。 - SimoMatavulj

1
你可以使用some:
var result= array.some(function (item) {
    return  item.Type.split(",").includes("Mango") && item.DealerID != 2;
});

过滤器有什么不同? - jeromej
有些等同于任何,而过滤器等同于Where。 - PRMan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接