WhereFieldEquals
Return all items from the list where their given 'field' attribute is equal to 'equalTo' argument E.g. !WhereFieldEquals with the following arguments: - value=[{ "name": "192.1,0.82", "type": "IP" }, { "name": "myFile.txt", "type": "File" }, { "name": "172.0.0.2", "type": "IP" }] - field='type' - equalTo='IP' - getField='name' Will return all items names where field 'type' equals 'IP' - ['192.1,0.82', '172.0.0.2'].
- Type
- javascript
- Pack
- FiltersAndTransformers
Source
function toBoolean(value) {
if (typeof(value) === 'string') {
if (['yes', 'true'].indexOf(value.toLowerCase()) != -1) {
return true;
} else if (['no', 'false'].indexOf(value.toLowerCase()) != -1) {
return false;
}
throw 'Argument does not contain a valid boolean-like value';
}
return value ? true : false;
}
function whereFieldEquals() {
// Handles the operation of finding a list of objects where the given field is present under the specified location.
const valuesToSearch = argToList(args.value);
const field = args.field;
const equalTo = args.equalTo;
const getField = args.getField;
const foundMatches = [];
for (const dictItem of valuesToSearch) {
if (typeof dictItem === 'object' && dictItem[field] === equalTo) {
if (getField) {
const value = dictItem[getField];
if (value !== undefined) {
foundMatches.push(value);
}
} else {
foundMatches.push(dictItem);
}
}
}
if (foundMatches.length === 1) {
return foundMatches[0];
}
if (toBoolean(args.stringify || 'true')) {
return JSON.stringify(foundMatches);
} else {
return foundMatches;
}
}
try {
return whereFieldEquals();
} catch (error) {
throw 'Error occurred while running the script:\n' + error;
}
README
Returns all items from the list where their given field attribute is equal to the equalTo argument.
For example, !WhereFieldEquals with the following arguments:
- value=[{ name: ‘192.1,0.82’, type: ‘IP’ }, { name: ‘myFile.txt, type: ‘File’ }, { name: ‘172.0.0.2’, type: ‘IP’ }]
- field=’type’
- equalTo=’IP’
- getField=’name’
This will return all item names where field type equals IP - [‘192.1,0.82’, ‘172.0.0.2’].
Script Data
| Name | Description |
|---|---|
| Script Type | javascript |
| Tags | transformer, general, entirelist |
Inputs
| Argument Name | Description |
|---|---|
| value | The list to apply the transformer to. |
| field | The attribute in the collection items to check equality against equalTo. |
| equalTo | The value to filter all items by in the collection. |
| getField | The field to extract from each item (Optional). |
| stringify | Whether the argument should be saved as a string (Optional). |