day*_*mer 65 javascript lodash
考虑这个例子.我正在使用Lodash
'data': [
{
'category': {
'uri': '/categories/0b092e7c-4d2c-4eba-8c4e-80937c9e483d',
'parent': 'Food',
'name': 'Costco'
},
'amount': '15.0',
'debit': true
},
{
'category': {
'uri': '/categories/d6c10cd2-e285-4829-ad8d-c1dc1fdeea2e',
'parent': 'Food',
'name': 'India Bazaar'
},
'amount': '10.0',
'debit': true
},
{
'category': {
'uri': '/categories/d6c10cd2-e285-4829-ad8d-c1dc1fdeea2e',
'parent': 'Food',
'name': 'Sprouts'
},
'amount': '11.1',
'debit': true
},
Run Code Online (Sandbox Code Playgroud)
当我做
_.filter(summary.data, {'debit': true})
Run Code Online (Sandbox Code Playgroud)
我把所有的物品都拿回来了.
我想要的是?
我希望所有的物体在哪里category.parent == 'Food'
,我该怎么做?
我试过了
_.filter(summary.data, {'category.parent': 'Food'})
Run Code Online (Sandbox Code Playgroud)
得到了
[]
Run Code Online (Sandbox Code Playgroud)
Akr*_*kos 140
lodash允许嵌套对象定义:
_.filter(summary.data, {category: {parent: 'Food'}});
Run Code Online (Sandbox Code Playgroud)
从v3.7.0开始,lodash还允许在字符串中指定对象键:
_.filter(summary.data, ['category.parent', 'Food']);
Run Code Online (Sandbox Code Playgroud)
JSFiddle中的示例代码:https://jsfiddle.net/6qLze9ub/
lodash还支持使用数组进行嵌套; 如果要过滤其中一个数组项(例如,如果category是数组):
_.filter(summary.data, {category: [{parent: 'Food'}] });
Run Code Online (Sandbox Code Playgroud)
如果你真的需要一些自定义比较,那么何时传递一个函数:
_.filter(summary.data, function(item) {
return _.includes(otherArray, item.category.parent);
});
Run Code Online (Sandbox Code Playgroud)
idb*_*old 45
_.filter(summary.data, function(item){
return item.category.parent === 'Food';
});
Run Code Online (Sandbox Code Playgroud)
evi*_*ive 12
从v3.7.0
你开始可以这样做:
_.filter(summary.data, 'category.parent', 'Food')
Run Code Online (Sandbox Code Playgroud)