javascript _.where() 函数是否不允许字符串中有空格?

Does javascript _.where() function not allow spaces in the string?

我正在尝试使用 _.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"
}

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 您的传递是否实际上是一个对象或数组,并且不是未定义的或空的。 .

您可以尝试使用 _.filter 而不是 _.where,看看是否有任何不同:

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