使用underscoreand和lodash库通过ID从数组中获取项目

Mic*_*ael 1 javascript underscore.js lodash

我有这个数组:

var arrA = [
      {"id": 1, "name": "Manager", "assignable": true},
      {"id": 2, "name": "Developer", "assignable": true},
      {"id": 3, "name": "Reporter", "assignable": true}
      {"id": 4, "name": "Position", "assignable": true},
      {"id": 5, "name": "Mayor", "assignable": true},
      {"id": 6, "name": "Porter", "assignable": true}];

var arrB = [1,4,5];
Run Code Online (Sandbox Code Playgroud)

我在我的项目中使用了underscore.jslodash.js

从arrA数组中获取id等于arrB项的所有项的优雅方法是什么?

Ori*_*ori 5

最高性能和优雅的方法是使用lodash链接到.indexBy()项目的ID,然后使用lid 获取相关项目.at():

var arrA = [
      {"id": 1, "name": "Manager", "assignable": true},
      {"id": 2, "name": "Developer", "assignable": true},
      {"id": 3, "name": "Reporter", "assignable": true},
      {"id": 4, "name": "Position", "assignable": true},
      {"id": 5, "name": "Mayor", "assignable": true},
      {"id": 6, "name": "Porter", "assignable": true}
];

var arrB = [1,4,5];

var returnedItems = _(arrA)
  .indexBy('id')
  .at(arrB)
  .value();

document.getElementById('results').innerText = JSON.stringify(returnedItems);
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.js"></script>

<div id="results"></div>
Run Code Online (Sandbox Code Playgroud)