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"];
我有上面两个数组,我想使用 list2 过滤 list1。我的输出应该是 [{id: 'a'},{id: 'b'},{id: 'c'}] 或者只有 ['a','b','c']。
我正在按照以下方式进行过滤,但没有得到任何结果。这里有什么问题?
var ids = _.filter(list1, function(id) {
_.each(list2, function(name){
return id.user === name;
});
});
最佳答案
在普通的 Javascript 中,您可以只过滤数组,然后将 id
映射到结果集。
var list1 =[{ user: "A", id: 'a' }, { user: "B", id: 'b' }, { user: "C", id: 'c' }, { user: "D", id: 'd' }, { user: "E", id: 'e' }],
list2 = ["A","B","C"],
result = list1.filter(a => list2.includes(a.user)).map(a => a.id);
console.log(result);
带下划线的
-
_.pluck
获取属性(property)的值(value), -
_.contains
用于检查值是否在数组中以及 -
_.filter
用于返回子集。
var list1 =[{ user: "A", id: 'a' }, { user: "B", id: 'b' }, { user: "C", id: 'c' }, { user: "D", id: 'd' }, { user: "E", id: 'e' }],
list2 = ["A","B","C"],
result = _.pluck(_.filter(list1, a => _.contains(list2, a.user)), 'id');
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
关于javascript - 使用另一个数组在 underscorejs 中过滤一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43199734/