javascript - 使用下划线按键查找值

标签 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",
  };

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

 var fileToSearch = "joe.jpg";

应该输出的是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

如何使用 Underscore 优化/实现此目的?

最佳答案

您可以使用 _.findKey这样:

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

请注意,此方法从 v1.8.0 开始可用。

关于javascript - 使用下划线按键查找值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36752980/

相关文章:

javascript - 使用 Angular 路由的 $http 调用

javascript - Jquery 如果类具有匹配的 ID,则隐藏

javascript - ajax 上的回调用于设置变量值

javascript - 将套接字数据从一个用户 session 非异步传递到另一个用户 session

javascript - 识别列表中的 JavaScript 错误 700 "entries"

javascript - 使用 lodash 过滤缺失的数组对象

javascript - 在具有多个条目的对象中使用 invert

javascript - 在 Javascript 中合并共享键上的多个数组

javascript - underscorejs 唯一不起作用

javascript - Jquery Promise 主干提取