Eri*_*rik 10 javascript underscore.js
我有以下数组值:
[
{
id: 1,
field: 'map'
},
{
id: 2,
field: 'dog'
},
{
id: 3,
field: 'map'
}
]
Run Code Online (Sandbox Code Playgroud)
我需要找出字段等于dog和的元素map.我知道我可以使用该_.filter方法并传递迭代器函数,但我想知道的是,是否有更好的解决方案可以传递搜索字段和可能的值.有人可以提供更好的方法吗?
编辑 ::
我可以使用以下方法:
_.where(array, {field: 'dog'})
Run Code Online (Sandbox Code Playgroud)
但在这里我只能检查一个条款
vku*_*kin 19
_.filter(data, function(item){ return item.field === 'map' || item.field === 'dog'; })
Run Code Online (Sandbox Code Playgroud)
如果你想创建,它接受一个函数field和values它可以是这样的:
function filter(data, field, values) {
_.filter(data, function(item){ return _.contains(values, item[field]); })
}
Run Code Online (Sandbox Code Playgroud)
只需传递过滤条件,_.filter(list, predicate, [context])然后将其第三个参数设置为迭代器的context(this):
var data = [
{ id: 1, field: 'map' },
{ id: 2, field: 'dog' },
{ id: 3, field: 'blubb' }
];
var filtered = _.filter(
data,
function(i) { return this.values.indexOf(i.field) > -1; },
{ "values": ["map", "dog"] } /* "context" with values to look for */
);
console.log(filtered);Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>Run Code Online (Sandbox Code Playgroud)