我有一个包含JSON任务数组的文件:

当前文件包含:

[
 {"task":"hey", "checked":"0", "data1":"", "data2":"", "data3":""},
 {"task":"there", "checked":"0", "data1":"jiojoi", "data2":"", "data3":""}
]


我想隔离一个签署任务,因此我使用以下代码:

var taskExp = new RegExp('{"task":"' + taskName + '",.*"}', '');

// Get the task
var task = taskExp.exec(text);


在这种情况下,如果taskName = "hey",它将返回整个字符串。 (2个任务)。

如果taskName = "there"没关系。

为什么?提前致谢。

最佳答案

使用正则表达式过滤掉JSON字符串的属性是一个坏主意。
将其解析为一个对象(/ array),然后使用filter

假设text是您的JSON字符串:

var dataArray = JSON.parse(text),
    taskName = "someTaskName";

var result = dataArray.filter(function(item){
    return item.task === taskName;
});


然后,result是所有匹配任务的数组。

10-08 09:36