2016-02-12 102 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