Javascript 使用lodash或angularjs测试对象中是否存在值的最简单方法是什么

Javascript 使用lodash或angularjs测试对象中是否存在值的最简单方法是什么,javascript,angularjs,find,boolean,lodash,Javascript,Angularjs,Find,Boolean,Lodash,如果obj是一个集合,那么这是可行的,但是如果我只是尝试测试单个对象中是否存在一个值,那么它就不起作用了。使用lodash或angularjs测试对象中是否存在serach项的最有效方法是什么?谢谢 var obj={ id:4, 名称:'测试', 价值:'汽车', 描述:“我喜欢汤” } var searchTerm=‘soup’; var testObject=function(){ var状态=真; 状态=u.some(obj,searchTerm); console.dir(状态);

如果obj是一个集合,那么这是可行的,但是如果我只是尝试测试单个对象中是否存在一个值,那么它就不起作用了。使用lodash或angularjs测试对象中是否存在serach项的最有效方法是什么?谢谢

var obj={
id:4,
名称:'测试',
价值:'汽车',
描述:“我喜欢汤”
}
var searchTerm=‘soup’;
var testObject=function(){
var状态=真;
状态=u.some(obj,searchTerm);
console.dir(状态);
}
testObject()

您可以使用lodash的
\.values
\.some
和谓词来实现此功能

var obj={
身份证号码:45,
名称:'测试',
价值:'汽车',
描述:“我喜欢汤”
}
var testObject=函数(searchTerm){
console.log(u.some(u.value(obj))函数{
返回u.isString(s)?s.indexOf(searchTerm)!==1:''+s==searchTerm;
}));
}
testObject('soup');
testObject('4');
testObject('45')

一种简单但并非最佳的方法,可以在对象层次结构中的任何位置查找

function hasKeyValue(object, keyValue)
{
return JSON.stringify(object).indexOf(':"'+keyValue+'"') !== -1;
}

!!字符串(u.values(obj)).match(searchTerm);或者没有uuz!!stringify(obj).match(searchTerm)<代码>它不起作用
真的没有帮助。你能说得更具体些吗?@JSilva你对这个问题的上一次更新彻底改变了它,这是不允许的。所以我恢复了编辑。这是有效的,除非对象包含空值怎么办?我更新了问题中的对象以反映更精确的对象。@JSilva即使使用空值也可以正常工作。
..isString
检查可确保。搜索项应针对对象中的所有项,因此如果我将搜索项更改为4,则不会针对ID进行搜索。是否有方法让它也针对非字符串项进行搜索?非常感谢@我忍不住发现。。。古怪的为什么它要检查字符串是否在值中的任何位置,但应该与所有其他类型的值完全匹配?我们有一个允许用户键入搜索短语的输入框。搜索短语将检查联系人记录中的所有列。此联系人记录包括他们的员工ID(号码)、电话号码、日期。。。各种不同的领域。有些是空的,有些不是。因此,我正在寻找一些东西来检查输入的值是否存在于记录中的任何位置。