2017-07-03 56 views
1

如何过滤数组是否在另一个数组内?过滤内部数组javascript

我该如何循环?

var jobs = [ 
    { 
     'id': '1', 
     'departments': [{'name': 'Finance'}], 
     'offices': [{'name': 'US'}, {'name': 'Brazil'}] 
    }, 
    { 
     'id': '1', 
     'departments': [{'name': 'Finance'}], 
     'offices': [{'name': 'Paris'}, {'name': 'China'}] 
    } 
]; 

var results = jobs.filter(function(o)) { 
    return o.offices[0].name == 'US'; 
} // get office US; 

jsFiddle Link

+3

'jobs.filter(J => j.offices.some(O => o.name === “US”))'使用'some'以查看是否之一“办公室”阵列内的对象符合您的要求。 – user3297291

回答

1

当你想通过筛选值的阵列可能在一个内部数组存在,您可以在内部阵列上使用Array#some。方法Array#some返回true,并且如果数组中的至少一个元素满足条件,则停止迭代。

var jobs = [{"id":"1","departments":[{"name":"Finance"}],"offices":[{"name":"US"},{"name":"Brazil"}]},{"id":"1","departments":[{"name":"Finance"}],"offices":[{"name":"Paris"},{"name":"China"}]}]; 
 

 
var jobsWithoutUs = jobs.filter(function(job) { 
 
    return job.offices.some(function(office) { 
 
    return office.name === 'US'; 
 
    }); 
 
}); 
 

 
console.log(jobsWithoutUs);