Javascript 使用另一个数组筛选下划线JS中的数组
我有以上两个数组,我想使用list2过滤list1。我的输出应该是[{id:'a'},{id:'b'},{id:'c'}],或者仅是['a','b','c'] 我正在按照下面的方法进行过滤,但没有得到任何结果。这里怎么了Javascript 使用另一个数组筛选下划线JS中的数组,javascript,arrays,underscore.js,Javascript,Arrays,Underscore.js,我有以上两个数组,我想使用list2过滤list1。我的输出应该是[{id:'a'},{id:'b'},{id:'c'}],或者仅是['a','b','c'] 我正在按照下面的方法进行过滤,但没有得到任何结果。这里怎么了 var list1 =[{user: "A", id: 'a'}, {user: "B", id: 'b'}, {user: "C", id: 'c'}, {user: "D", id: 'd'},
var list1 =[{user: "A", id: 'a'},
{user: "B", id: 'b'},
{user: "C", id: 'c'},
{user: "D", id: 'd'},
{user: "E", id: 'e'}];
var list2 = ["A","B","C"];
在纯Javascript中,您可以只过滤数组,然后将
id
映射到结果集
var list1=[{user:“A”,id:'A'},{user:“B”,id:'B'},{user:“C”,id:'C'},{user:“D”,id:'D'},{user:“E”,id:'E'},
清单2=[“A”、“B”、“C”],
result=list1.filter(a=>list2.includes(a.user)).map(a=>a.id);
控制台日志(结果)代码>过滤器中的函数应返回一个布尔值,表示“保留”或“不保留”each
对数组的每个元素执行操作,但不返回任何内容
一个简单的解决方法是使用find
而不是each
:
var ids = _.filter(list1, function(id) {
_.each(list2, function(name){
return id.user === name;
});
});
要仅提取ID,请使用map
:
var ids = _.filter(list1, function(id) {
return _.find(list2, function(name) { return id.user === name; });
});
ids = ids.map(function(user){ return user.id });