Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 滤波器子阵列_Javascript_Angularjs_Linq.js - Fatal编程技术网

Javascript 滤波器子阵列

Javascript 滤波器子阵列,javascript,angularjs,linq.js,Javascript,Angularjs,Linq.js,我正在尝试筛选具有子数组的数组。 我想按子数组筛选数组 我的数组如下所示: var Branches = [ { Name: 'branch1', Screens: [ { Name: 'Screen1', Player: {

我正在尝试筛选具有子数组的数组。 我想按子数组筛选数组 我的数组如下所示:

 var Branches = [
            {
                Name: 'branch1',
                Screens: [
                    {
                        Name: 'Screen1',
                        Player: {
                            Status: 0
                        }
                    },
                    {
                        Name: 'Screen2',
                        Player: {
                            Status: 1
                        }
                    }
                ]
            },
            {
                Name: 'branch2',
                Screens: [
                    {
                        Name: 'Screen1',
                        Player: {
                            Status: 0
                        }
                    },
                    {
                        Name: 'Screen2',
                        Player: {
                            Status: 1
                        }
                    }
                ]
            }]
我已经用linq.js尝试过了

var param = 1
var result = Enumerable.From(Branches).Where(function (d) {

                return (d.Screen.some(x => x.Player.Status === param))

            }).ToArray();
但是这段代码olso从每个分支获取状态0

我只想从每个分支获取status=1

预期结果:

[
            {
                Name: 'branch1',
                Screens: [
                    {
                        Name: 'Screen2',
                        Player: {
                            Status: 1
                        }
                    }
                ]
            },
            {
                Name: 'branch2',
                Screens: [
                    {
                        Name: 'Screen2',
                        Player: {
                            Status: 1
                        }
                    }
                ]
            }

        ]
谢谢;)

var分支=[
{
名称:“branch1”,
屏幕:[
{
名称:“屏幕1”,
玩家:{
状态:0
}
},
{
名称:“屏幕2”,
玩家:{
现状:1
}
}
]
},
{
名称:“branch2”,
屏幕:[
{
名称:“屏幕1”,
玩家:{
状态:0
}
},
{
名称:“屏幕2”,
玩家:{
现状:1
}
}
]
}
];
var参数=1;
console.log(分支.reduce((p,c)=>((c.Screens=c.Screens
.filter(s=>s.Player.Status==param)).length和p.push(c,p),[]

));
您可以映射对象并过滤
屏幕

var branchs=[{Name:'branch1',屏幕:[{Name:'Screen1',播放器:{Status:0}}},{Name:'Screen2',播放器:{Status:1}]},{Name:'branch2',屏幕:[{Name:'Screen1',播放器:{Status:0}},{Name:'Screen2',播放器:{Status:1}]},
通缉犯=1,
result=branchs.map({Screens,{o})=>({……o,Screens:Screens.filter({Player:{Status})=>Status==wanted}));

控制台日志(结果)使用linq.js,您需要将其视为使用一组过滤的屏幕选择分支。您可能不想修改现有项,因此应该创建新项

let status = 1;
let result = Enumerable.From(Branches)
    .Select(({Screens, ...rest}) => ({
        Screens: Enumerable.From(Screens)
            .Where(({Player:{Status}}) => Status === status)
            .ToArray(),
        ...rest
    })).ToArray();

尽管Nina展示了,但您并不真正需要它,因为
Array.map
Array.filter
可以处理这个问题。

如果您没有
状态:1
在里面怎么办?是否要获取父对象?或者只是对内部数组进行过滤?是的,我想得到父对象和childs wichfiltered@NinaScholz嗨,还有其他解决办法吗?thanksi出现错误:fis未定义,我尝试用p替换它,但没有得到任何结果:(您使用的浏览器是什么?我使用的是Google Chrome Hi may Branchs Screens在第一个过滤器后被删除。例如:我想要状态:1,在下一个过滤器中我想要状态:0,但所有状态:0都被删除了?抱歉,我不明白这个问题?谢谢,这是我要找的。您能解释一下“…o”的语法是什么吗?
…o
采用的语法吗对象的其余部分不具有已分解的属性。