2016-02-12 3 views
2

Я новичок в использовании Lodash, поэтому прошу прощения, если вопрос тривиален.Lodash match string to object

У меня есть строка, и я должен проверить ее на коллекцию.

var x = 'foo' 

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

Как сравнить стоимость x против стоимости one, two и three использованием Lodash (или простые JS, если это более удобно), чтобы найти, если есть совпадение или нет?

ответ

4

Если вы хотите использовать Lodash для этого примера, вы можете использовать includes метод:

_.includes(myObject, x) 

Проверяет значение в коллекции.

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 ... in (docs):

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

@AmirПопович, я вижу сейчас. Я обновлю. благодаря! –

+0

Да, я попробовал. [JSFiddle] (https://jsfiddle.net/RajeshDixit/hj5ah8ev/) – Rajesh

0

ключ находят по значению _.findKey(myObject, (row) => row === x) // returns "two"

просто проверить, если значение существует: _.includes(myObject, x) // returns true