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
采用的语法吗对象的其余部分不具有已分解的属性。