如何为搜索对象数组添加多个键和值



我有用于在数组中搜索数据的函数代码,它运行良好,在一个键和一个值中。 我想要的是具有多个键和值的数组搜索,其工作方式类似于SQL中的查询and

我的问题:如何在函数代码中添加多个键和值?

数组数据:

[{
"id": 1,
"name": "John",
"addres": {
"code": 1,
"status": 1
}
},
{
"id": 2,
"name": "Jery",
"addres": {
"code": 2,
"status": 1
}
}
]

我的函数代码:

function where(prop, value) {
var filtered = [], checkStatus = 0;
for (var i = 0; i < data.length; i++) {
var obj = data[i];
for (var key in obj) {
var item = obj[key];
if (typeof(obj[key] == "object")) {
if (item[prop] == value) {
checkStatus = 1;
filtered.push(obj);
}
if (typeof(value) == "string") {
if (item[prop] != undefined
&& item[prop].toLowerCase().includes(value.toLowerCase())) {
checkStatus = 1;
filtered.push(obj);
}
}
}
}
if (checkStatus == 0 && obj[prop] != undefined) {
if (obj[prop] == value) {
filtered.push(obj);
}
if (typeof(obj[prop]) == 'string') {
if (obj[prop] != undefined
&& obj[prop].toLowerCase().includes(value.toLowerCase())) {
filtered.push(obj);
}
}
}
}
return filtered;
}

它在where('status',1)时工作,但我想要where(['id','status'],[2,1])

对不起大家,我试过并成功了

function where(value) {
var result = data.filter(function(o) {
return Object.keys(value).every(function(p) {
if (typeof(o[p]) == 'object') {
return Object.keys(value[p]).some(function(opo) {
if (typeof(value[p][opo]) == 'string') {
return o[p][opo].toLowerCase().includes(value[p][opo].toLowerCase());
} else {
return o[p][opo] == value[p][opo];
}
});
} else if (typeof(o[p]) == 'string') {
return o[p].toLowerCase().includes(value[p].toLowerCase());
} else {
return o[p] == value[p];
}
});
});
return result;
}

谢谢你给我关于使用对象的建议,打电话给我where({id:2,addres:{status:1}})

最新更新