2016-02-12 103 views
2

我是新来使用Lodash,所以我很抱歉,如果问题是微不足道的。Lodash匹配字符串到对象

我有一个字符串,我必须根据集合进行验证。

var x = 'foo' 

var myObject = { 
    one: 'bar', 
    two: 'foo', 
    three: 'wiz' 
} 

如何比较反对使用Lodash(或纯JS如果它更方便)的的onetwothreex价值发现,如果有一个匹配或不?

回答

4

如果你想使用Lodash在这个例子中,你可以使用includes方法:

_.includes(myObject, x) 

检查是否值是在集合。按值 _.findKey(myObject, (row) => row === x) // returns "two"

1

您可以使用Object.keys得到一个对象的关键点,并检查是否存在使用一个或多个按键使用Array.prototype.some

var x = 'foo' 

var myObject = { 
    one: 'bar', 
    two: 'foo', 
    three: 'wiz' 
} 

var hasAnyKeyThatMatchesx = Object.keys(myObject).some(function(k){ return myObject[k] === x }); 
0

你也可以遍历一个对象的属性与for ... indocs):

var x = 'foo'; 

var myObject = { 
    one: 'bar', 
    two: 'foo', 
    three: 'wiz' 
} 

function containsValue(obj, value) { 

    for (var prop in myObject) { 
     if(x === myObject[prop]) { 
      return true; 
     } 
    } 
    return false; 
} 

console.log(containsValue(myObject, x)); 

这只是普通的js。

+0

我不知道这是否会工作。 – Rajesh

+0

@AmirPopovich我现在看到了。我会更新。谢谢! –

+0

是的,我尝试过。 [JSFiddle](https://jsfiddle.net/RajeshDixit/hj5ah8ev/) – Rajesh

0

发现关键只是检查是否存在的价值:_.includes(myObject, x) // returns true