在Javascript对象中查找特定值
我谦恭地请求帮助。我正在做一个项目,在这个项目中,我需要设置一个搜索来查找对象中的所有实例,其中一个特定值等于用户正在搜索的任何术语。我找到了以下代码:在Javascript对象中查找特定值,javascript,search,object,Javascript,Search,Object,我谦恭地请求帮助。我正在做一个项目,在这个项目中,我需要设置一个搜索来查找对象中的所有实例,其中一个特定值等于用户正在搜索的任何术语。我找到了以下代码: function getObjects(obj, key, val) { var objects = []; for (var i in obj) { if (!obj.hasOwnProperty(i)) continue; if (typeof obj[i] == 'object')
function getObjects(obj, key, val) {
var objects = [];
for (var i in obj) {
if (!obj.hasOwnProperty(i)) continue;
if (typeof obj[i] == 'object') {
objects = objects.concat(getObjects(obj[i], key, val));
} else if (i == key && obj[key] == val) {
objects.push(obj);
}
}
return objects;
}
(以确保给予适当的信任),这非常有效,但我正在寻求一些帮助,以扩展此代码的功能,包括一次搜索多个元素的能力,以及在返回时显示正在返回的相同对象中的其他值。例如,使用上述代码返回的值仅为[Object]:
我希望做的是在[>对象]上附加另一个来自对象的变量值,可能是ID或Description,这两者都是返回结果的一部分。因此,期望的结果将类似于“Object:ID=b01”或“Object:Desc=This is Maple”,这将允许我的用户快速查看他们需要查看的结果之一
提前感谢您的帮助 根据您的描述,我已将函数更改为查看树状对象,并能够挑出包含所有提供的
键值对的对象。此外,它允许您指定要在匹配的对象上输出额外参数。(如id
和description
)
下面是代码和示例
研究使用JSONPATH,如果他们一次可以搜索多个元素,那么如果对象匹配所有元素或任何元素,是否会将其添加到对象数组中?对不起,应该更具体一些。如果他们在搜索中有多个元素,那么它将是AND而不是OR,所以Alnitak数据源不是JSON对象,因此我必须先转换它,然后才能使用JSONPath。如果这最终是don需要做的,那么我会继续这样做,但我会尽量让这件事尽可能简单。@AndrewR jsonpath处理解析的JSON数据,这恰好是本机JS对象结构。谢谢Tom!我将在明天返回时对其进行测试。还有一个问题,如果我只想返回id
和description
而不是整个原始对象,我将如何更改函数?谢谢我基本上更新了小提琴,唯一的变化是这行var out={}代码>