使用下划线通过键查找值

cus*_*ice 3 javascript underscore.js

我有一个字符串,需要在 json 对象中搜索并从找到的值返回特定的哈希值。我让它在没有下划线的情况下工作,但它的优化很差。我需要做的是一旦fileToSearch找到字符串就停止循环。

例如,我这里有一个 json 对象:

  var json = {
    "images/mike.jpg" : "images/mike.12345.jpg",
    "images/joe.jpg" : "images/joe.axcvas.jpg",
    "images/mary.jpg" : "images/mary.mndfkndf.jpg",
    "images/jane.jpg" : "images/jane.dfad34.jpg",
  };
Run Code Online (Sandbox Code Playgroud)

fileToSearch我需要在上面的对象中查找一个变量。

 var fileToSearch = "joe.jpg";
Run Code Online (Sandbox Code Playgroud)

应该输出的是 中的哈希值images/joe.axcvas.jpg,所以axcvas

没有下划线:

  var hash;

  for (var key in json) {
    var index = key.indexOf(fileToSearch);
    if (index !== -1) {
      hash = json[key].split('.')[1];
    }
  }
  console.log(hash); //axcvas
Run Code Online (Sandbox Code Playgroud)

如何使用 Underscore 优化/实现这一目标?

hin*_*ost 5

您可以_.findKey这样使用:

var key = _.findKey(json, function(value, key) {
    return key.indexOf(fileToSearch) >= 0;
});
var hash = key? json[key].split('.')[1] : undefined;
Run Code Online (Sandbox Code Playgroud)

请注意,此方法自 v1.8.0 起可用。