我有一个JSON数据集,它返回时可能非常大,每个对象都有以下结构:
const iteratees = ['ctr', 'property.value', 'status.stage']
现在我想搜索数组中的所有对象并仅返回包含某种字符串的对象,但我只想搜索某些属性。
我基本上有另一个包含我想要搜索的键的数组,例如
static private Int32 AttendeeRef;
static public int attendeeref
{
get
{
return AttendeeRef;
}
set
{
if (value <= 40000 && value >= 60000)
{
throw new ArgumentException("Attendee Ref must be between 40000 and 60000!");
}
AttendeeRef = value;
}
}
我在项目中有lodash,但我不知道从哪里开始。
有什么想法吗?
答案 0 :(得分:0)
您可以使用filter()
,some()
和reduce()
来执行此操作。
const iteratees = ['ctr', 'property.value', 'status.stage'];
var searchFor = 'lo';
var result = arr.filter(function(o) {
return iteratees.some(function(e) {
var res = e.split('.').reduce(function(a, b) {
if(a) return a[b];
}, o);
if(res) {
if((res).toString().indexOf(searchFor) != -1) return true;
}
})
})
var arr = [{
"ctr": 'lorem',
"averageECPC": 23,
"cost": 2732.54,
"margin": 66,
"profit": 2495.9,
"property": {
"value": "Izzby",
"uri": "/Terrago/2"
},
"status": {
"content": "<p>Some Content</p>",
"stage": 1
},
"alerts": {
"status": 2
},
"revenue": {
"value": 2573.13,
"compare": 0
},
"children": [{
"ctr": 79,
"averageECPC": 54,
"cost": 3554.78,
"margin": 88,
"profit": 3145.81,
"property": {
"value": "Comvex",
"uri": "/Octocore/4"
},
"status": {
"content": "<p>Some Content</p>",
"stage": 1
},
"alerts": {
"status": 2
},
"revenue": {
"value": 1247.92,
"compare": 0
}
}]
}, {
name: 'lorem',
ctr: 12,
property: {
value: 1
},
status: {
stage: 1
}
}, {
name: 'ipsum'
}]
const iteratees = ['ctr', 'property.value', 'status.stage'];
var searchFor = 'lo';
var result = arr.filter(function(o) {
return iteratees.some(function(e) {
var res = e.split('.').reduce(function(a, b) {
if (a) return a[b];
}, o);
if (res) {
if ((res).toString().indexOf(searchFor) != -1) return true;
}
})
})
console.log(result)
&#13;