我有一个字符串,我需要在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优化/实现此目标?
答案 0 :(得分:4)
您可以这样使用_.findKey
:
var key = _.findKey(json, function(value, key) {
return key.indexOf(fileToSearch) >= 0;
});
var hash = key? json[key].split('.')[1] : undefined;
请注意,此方法自v1.8.0起可用。
答案 1 :(得分:0)
您可以在找到元素
时中断循环 var hash;
for (var key in json) {
var index = key.indexOf(fileToSearch);
if (index !== -1) {
hash = json[key].split('.')[1];
break;
}
}
console.log(hash);