Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.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 使用另一个数组筛选下划线JS中的数组_Javascript_Arrays_Underscore.js - Fatal编程技术网

Javascript 使用另一个数组筛选下划线JS中的数组

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'},

我有以上两个数组,我想使用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'},
            {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 });