将多个值添加到对象中的某个键js
问题描述:
我的目标是将相同的颜色分配给特定对象中的所有事件。我的对象如下所示:将多个值添加到对象中的某个键js
var hConfig = [
{
label: "A",
criteria: ["Event0", "Event1"],
field: "evt"
},
{
label: "B",
criteria: ["Event2", "Event3"],
field: "evt"
},
{
label: "C",
criteria: ["Event4", "Event5", "Event6"],
field: "evt"
}
];
因此,属于标签的所有条件都应该具有相同的颜色。这项作业的功能是:
function highlightRegex (highlightConfig) {
// we will return an array of regex objects
var i;
var hl;
for (i = 0; i < highlightConfig.length; i++) {
hl = highlightConfig[i];
logger.info("hl object", hl);
hl.re = new RegExp(hl.criteria, "im");
}
}
function highlight (event, highlightConfig) {
// we will return the index if there is a match and -1 otherwise
var i;
var hl;
for (i = 0; i < highlightConfig.length; i++) {
hl = highlightConfig[i];
if (hl.re.test(event[hl.field])) {
return i;
}
}
return -1;
}
对于每一个数据,当事件名称与一个在标准,我们指定一种颜色。
resultHighlight = highlight(value, hConfig);
value.evtColor = getColor(resultHighlight);
现在,如果我只为标准密钥传递一个值,此功能就完美了。
criteria: "Event1"
但如果我必须在标准键传递多个事件的名称,然后它打破,并且不指定颜色的任何事件名称。我应该如何将这些条件作为一个值的数组来读取,并确保它读取正确?
答
因为RegeExp需要一个字符串而不是数组,所以您必须自己创建一个字符串。
有点像的是:
var criteriaString = '(' + hl.criteria.join(')|(') + ')';
hl.re = new RegExp(criteriaString , "im");
这应阵列["Event4", "Event5", "Event6"]
转换为以下字符串:(Event4)|(Event5)|(Event6)
,这对于任一或EVENT4或Event5 Event6正则表达式。
是的,这是一个问题。此解决方案完美运作。谢谢 :) – user2128