javascript _.where()函数不允许字符串中的空格吗?

时间:2015-01-20 16:04:14

标签: javascript underscore.js

我正在尝试使用_.where来查看这个大型的json映射文件。我之前使用过它,但搜索词从不包含空格,功能运行良好。现在我使用的是具有空格的搜索词,它永远不会带回任何匹配项。以下是一段带有示例entityName(搜索词)的代码。

   entityName = "HEMTT WRECKER M984A1 MK19";
    alert("entityName2: " + entityName);
    entityMap = _.where(cdpeConfig.oobEntityMap, { "obs name" :entityName});
    alert("entityMap: " + entityMap);

oobEntityMap内部有json元素,上面的entityName应该与以下内容匹配:

{
"obs name":"HEMTT WRECKER M984A1 MK19",
"edcss name":"M977_HEMTT_CARGO",
"mapping type":"skos:relatedMatch",
"obs dis enum":"1:2:225:7:19:3:2",
"edcss dis enum":"1:0:225:9:19:1:0"
}

2 个答案:

答案 0 :(得分:1)

Javascript没有_.where()函数。 Underscore确实有这个功能,这可能是你使用的功能。

http://underscorejs.org/#where

确实允许空格。

var stuff = [
    {"Bilbo Baggins" : "Little Hobbit"},  
    {"Gandalf Grey" : "Tall Wizard"}
];

var foo = _.where(stuff, {"Bilbo Baggins" : "Little Hobbit"}); 
console.log(foo);

http://jsfiddle.net/av3rhxp9/

尝试查看cdpeConfig.oobEntityMap是否传递实际上是一个对象或数组,并且未定义或为空。 。

答案 1 :(得分:1)

您可以尝试使用_.filter代替_.where,看看这是否有所不同:

entityMap = _.filter(cdpeConfig.oobEntityMap, function(obj){ 
     return obj["obs name"].match(/HEMTT WRECKER M984A1 MK19/);
});