我正在跟踪对象数组。数组中的每个对象都包含用户信息。
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
我做错了什么?
最佳答案
- 过滤数组以保留
selected
值为true
的用户。 - 使用
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/