Reconstruct JSON array, only competed nodes

Input:
[
{
"{#SNMPINDEX}": "1",
"{#A}": "1",
"{#B}": "1"
},
{
"{#SNMPINDEX}": "2",
"{#A}": "1",
"{#B}": "1"
},
{
"{#SNMPINDEX}": "3",
"{#A}": "1"
}
]
Solution 1:
let list = JSON.parse(value);
let fields = '{#SNMPINDEX},{#A},{#B}'.split(',');
let result = [];
let keys;

for (var i = 0; i < list.length; i++) {
  keys = fields.length;
  for (field in fields) {
    if (fields[field] in list[i]) {
      keys--;
      continue;
    }

    break;
  }

  if (keys == 0) {
    result.push(list[i]);
  }
}
Solution 2:
value = JSON.parse(value);
result = [];

value.forEach(function (item) {
if (typeof item === 'object' && typeof item['{#A}'] !== 'undefined' && typeof item['{#B}'] !== 'undefined') {
result.push(item);
}
});

return JSON.stringify(result);
Native JSONPath:
$[?(@["{#A}"] && @["{#B}"])]

No comments: