У меня следующие данные JSON,
var configs = [{
"port" : "3003",
"mongoURI" : "mongodb://localhost:27017/serviceRequest",
"MQ" : "RMQ",
"logLevel" : "2",
"version" : "1.1",
"created" : "03-06-2018 03:11:00 PM",
"active" : "N"
},
{
"port" : "3004",
"mongoURI" : "mongodb://localhost:27017/serviceRequest",
"MQ" : "IMQ",
"logLevel" : "1",
"version" : "1.2",
"created" : "07-06-2018 03:11:00 PM",
"active" : "Y"
},
{
"port" : "3003",
"mongoURI" : "mongodb://localhost:27017/serviceRequest",
"MQ" : "Apache Cafka",
"logLevel" : "3",
"version" : "1.3",
"created" : "03-06-2018 03:11:00 PM",
"active" : "Y"
},
{
"port" : "3003",
"mongoURI" : "mongodb://localhost:27017/serviceRequest",
"MQ" : "RMQ",
"logLevel" : "3",
"version" : "1.4",
"created" : "03-06-2018 03:11:00 PM",
"active" : "Y"
}]
И у меня есть следующий динамический объект json.
var cloudParam = {
"MQ" : "RMQ",
"logLevel" : "2"
}
Динамический означает, что пара ключ-значение в cloudParam не фиксирована. Сейчас у него MQ & LogLevel, но в следующий раз будет MQ,loglevel & version - в основном это не исправлено.
Итак, я хочу найти объект json, содержащий cloudParam.
Я пробовал код ниже, но не получаю json obj.
for(i = 0; i < configs.length ; i++){
var configItem = configs[i];
for (var item in cloudParam) {
if (item in configItem && configItem[item] === cloudParam[item]){
console.info("Present");
} else {
console.info("Not Present");
}
}
}
EDIT: @Aks, спасибо за ответ. Если я хочу найти индекс совпадающего документа, как его найти?





Используйте filter и every.
Вы можете использовать .find вместо .filter, если вам нужно только одно совпадение.
var cloudParam = {
MQ: "RMQ",
logLevel: "2"
};
console.info(
configs.filter(config =>
Object.keys(cloudParam).every(key => config[key] === cloudParam[key])
)
);
если [logLevel: "2"] присутствует два раза в исходном массиве, то есть в массиве конфигурации, он вернет 2 объекта, мне нужно точное совпадение.
Как я сказал в ответе: «Вы можете использовать .find вместо .filter, если вам нужно только одно совпадение».
Если я хочу узнать индекс соответствующего объекта, то как его найти.