假设我有一个 json 对象数组。
{ firstName: John, Children: ["Maria","Alfred"], married: false }
{ firstName: George, Children: ['**zoekerbergen alfonso the second**','Harvey'], married: false }
{ firstName: Hary, Children: ["Sam","Obama"], married: false }
其模式通常是子项是一系列小单词名称。
然而Zoekerbergen alfonso the second
是一种异常现象。
有没有办法学习物体的模式,然后检测异常情况,例如一个有 1000 个孩子的人?
您可以创建一个 JSON 模式来描述您的 JSON 数据(与 XML 的 XSD 相同)。它允许为字符串字段等定义正则表达式模式。
JSON Schema 是一个词汇表,允许您验证、注释和 操作 JSON 文档。
您的规则对于 JSON 模式解决方案来说可能过于复杂,但您可以轻松创建自己的规则集,如下所示:
var list = [
{firstName: 'John', Children: ['Maria', 'Alfred'], married: false},
{firstName: 'George', Children: ['**zoekerbergen alfonso the second**', 'Harvey'], married: false},
{firstName: 'Hary', Children: ['Sam', 'Obama', 'Peter'], married: false}
];
// change with your max
var maxChildren = 2;
// add more rules if needed
var anomaliesRules = [
function(row) {
return row.Children !== null && row.Children.length > maxChildren;
},
function(row) {
// you can define your own rules per item
return row.Children.filter(function(child) { return !child.match(/^[A-Z][a-z]+$/); }).length > 0;
}
];
var checkAllAnomalies = function(item) {
for (var i = 0; i < anomaliesRules.length; i++) {
if (anomaliesRules[i](item)) return true;
}
return false;
};
var anomalies = list.filter(checkAllAnomalies);
console.log(anomalies);
您最终会得到与至少一个您定义的异常相匹配的所有项目。