我有一个简单的问题。我有一个属性 groupBy 这是一个数组,只包含两个可能的值“product”和“date”。现在我想根据 groupBy 数组中的值存在创建另一个属性。在这种情况下,当我的 groupBy 数组包含“date”时,我想要进行解析!我怎么能这样做?
我可以检查数组是否包含值?
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="tasks" class="col-md-12 table">
<thead>
<tr>
<td>Service</td>
<td>Key notes</td>
<td>Claim Amount</td>
<td>Vetted Amount</td>
</tr>
</thead>
<tbody>
<tr class="therow">
<td class="claim_value">hey</td>
<td class="vet_value"></td>
<td>
<button class="button">button</button>
</td>
</tr>
<tr class="therow">
<td class="claim_value">you</td>
<td class="vet_value"></td>
<td>
<button class="button">button</button>
</td>
</tr>
<tr class="therow">
<td class="claim_value">me</td>
<td class="vet_value"></td>
<td>
<button class="button">button</button>
</td>
</tr>
<tr class="therow">
<td class="claim_value">them</td>
<td class="vet_value"></td>
<td>
<button class="button">button</button>
</td>
</tr>
</tbody>
</table>
答案 0 :(得分:4)
要解决这个问题,我们必须使用一个名为implication的布尔逻辑概念。为了将要求放在布尔逻辑术语中,我们会说“groupBy”包含“date”暗示需要“解析”。含义可表示为“(不是A)或B”。换句话说,“groupBy”不包含“date”,或者“resolution”是必需的。在这种形式下,应该更清楚如何实施解决方案。
{
"type": "object",
"properties": {
"pcsStreamId": { "type": "number" },
"start": { "type": "integer", "minimum": 0 },
"end": { "type": "integer", "minimum": 0 },
"groupBy": {
"type": "array",
"uniqueItems": true,
"items": { "enum": ["product", "date"] }
},
"resolution": { "enum": ["day", "year", "month", "shift"] }
},
"required": ["pcsStreamId", "start", "end", "groupBy"],
"anyOf": [
{ "not": { "$ref": "#/definitions/contains-date" } },
{ "required": ["resolution"] }
],
"definitions": {
"contains-date": {
"properties": {
"groupBy": {
"contains": { "enum": ["date"] }
}
}
}
}
}
此答案使用新的草案06 contains
关键字。我使用它是因为提问者使用它,但如果您使用的是draft-04,则可以使用“contains-date”的这个定义。它使用另一个逻辑标识(∃xA&lt; =&gt;¬∀x¬A)来获取contains
关键字的功能。
{
"definitions": {
"contains-date": {
"properties": {
"groupBy": {
"not": {
"items": {
"not": { "enum": ["date"] }
}
}
}
}
}
}
}
答案 1 :(得分:0)
您的groupby属性似乎是一个对象。可能是它所讨论的嵌套枚举属性(因为它是一个数组并包含日期和产品)。但是,一旦将此json解析为对象,您可以检查以下内容:
groupby.items.enums.indexOf('date') === -1
array.indexOf(anyItem)
返回项的索引,如果在数组中存在,则返回-1。
希望有所帮助