获取其子属性包含值的对象

本文关键字:对象 包含值 属性 获取 | 更新日期: 2023-09-27 18:32:45

Models:

public class Header{
    public int ID;
    public int someValue;
    public bool someOtherValue;
    public List<Trailer> Trailers;
}
public class Trailer{
    public int ID;
    public Language MyLanguage;
    public string someDifferentValue;
}

在我的控制器中,我将多个类型为 Header 的对象移交给我的 JavaScript 代码。现在我想浏览这些标头对象并获取满足多个条件的预告片。正如我已经发现的那样,有一个名为"grep"的JS/jQuery函数,其使用方式类似于c#/LINQ。其中()。

假设我想获取 ID 等于 1 的标头对象和英语中的相应预告片:

result = jQuery.grep(headerCollection, function(t){
    return jQuery.grep(t.Trailers, function(subT){
        return subT.Language == Language.English
    } && t.ID == 1
}

所以如果我做对了,结果[0]应该是我的标头对象和结果[0]。预告片[0]应该是我对应的英语预告片。

但正如预期的那样,它不起作用,我不知道为什么。有没有更好的方法来让它工作?

获取其子属性包含值的对象

jQuery.grep()返回一个数组,该数组始终是真实的。

因此,在回调中调用grep实际上没有任何意义。

相反,您应该在数组上调用内置的 some() 方法,该方法执行您实际想要的操作。

缺少括号:

result = jQuery.grep(headerCollection, function(t){
    return jQuery.grep(t.Trailers, function(subT){
        return subT.Language == Language.English
    }) && t.ID == 1
})