javascript - 链+过滤器+值返回值不就是一个函数吗?

标签 javascript underscore.js lodash

我正在跟踪对象数组。数组中的每个对象都包含用户信息。

var usersAll = [
  { id: '1', name: 'User 1', selected: true },
  { id: '2', name: 'User 2' },
  { id: '3', name: 'User 3' },
  { id: '4', name: 'User 4' }];

我想提取 selected 设置为 true 的用户。

这是我正在使用的代码

var selectedUsers = _(usersAll)
 .filter(function(u) {
   return u.selected
 })
 .map(function(u) {
   return u.name
 }
 .value()

但由于某种原因它返回这个:

TypeError: _(...).filter(...).value is not a function

我做错了什么?

最佳答案

使用_.filter_.pluck

  1. 过滤数组以保留 selected 值为 true 的用户。
  2. 使用Pluck获取name的值数组。

var usersAll = [{id: '1', name: 'User 1', selected: true},
    { id: '2', name: 'User 2'},
    { id: '3', name: 'User 3'},
    { id: '4', name: 'User 4', selected: true}
];

var selectedUserNames = _.pluck(_.filter(usersAll, 'selected'), 'name');

console.log(selectedUserNames);
document.write(selectedUserNames);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.min.js"></script>

<小时/>

如果您不想使用任何库,可以使用 Array#filter 在 JavaScript 中完成此操作。和 Array#map .

var usersAll = [{id: '1', name: 'User 1', selected: true},
    { id: '2', name: 'User 2'},
    { id: '3', name: 'User 3'},
    { id: '4', name: 'User 4', selected: true}
];

var selectedUserNames = usersAll.filter(function(e) {
    return e.selected;
}).map(function(e) {
    return e.name;
});

console.log(selectedUserNames);
document.write(selectedUserNames);

使用EcmaScript 6/ES15箭头函数,一行即可完成

usersAll.filter(e => e.selected).map(e => e.name);

关于javascript - 链+过滤器+值返回值不就是一个函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34625093/

相关文章:

javascript - 使用 Angular 将 <td> onclick 的值获取到同一行的另一个 <td>

javascript - 阿尔戈利亚搜索 : Error for list indexes and for adding objects

Javascript按值将数组转换为分组对象

javascript - 从数组中删除所有没有子元素的元素

javascript - 使用 _Underscore 基于另一个数组对包含对象的数组进行排序

javascript - 我如何使用 lodash 根据某个键总结集合

javascript - javascript中对象的递归合并

Javascript for 循环更改为 lodash

javascript - 使用 jspdf 的 HTML 到 PDF 转换器按钮

javascript - 有什么方法可以使 javascript 中的 encodeURIComponent 忽略某些字符?