javascript - 使用另一个数组在 underscorejs 中过滤一个数组

标签 javascript arrays underscore.js

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/

相关文章:

javascript - setElement 后 Backbone 事件未委托(delegate)给新元素

javascript - 在浏览器中播放原始 h264 直播流

javascript - 如何从 js bootsstrap iconpicker 获取选定的图标?

c - 读取.txt文件并打印结果

javascript - 我想我没有正确使用 Backbone JS 的 View ?

javascript - 计数事件然后使用throttle/debounce来执行事件

php - php和javascript一键提交多个表单

javascript - 等待图像加载插件不起作用

java - 95%完成了JAVA阵列代码。谁能帮我找到我的错误?

java - 了解数组访问(处理)