【发布时间】:2013-09-25 20:15:13
【问题描述】:
我谦虚地请求帮助。我正在做一个项目,我需要设置一个搜索来查找所有实例,在一个特定值等于用户正在搜索的任何术语的对象内。我找到了以下代码:
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;
}
here(以确保给予适当的信任),效果很好,但我正在寻求一些帮助来扩展此代码的功能以包括一次搜索多个元素的能力,并且此外,在返回时,显示正在返回的相同对象中的其他值。例如,使用上面的代码,返回只是 [Object]:
我希望做的是在 [>Object] 中附加来自 Object 的另一个变量值,可能是 ID 或 Description,它们都是返回结果的一部分。因此,所需的结果将类似于“Object: ID=b01”或“Object: Desc = This is Maple”,这将使我的用户能够快速查看他们需要查看的结果之一。
提前感谢您的帮助!
【问题讨论】:
-
研究使用 jsonpath
-
因此,如果他们一次可以搜索多个元素,如果匹配所有元素或任何元素,该对象是否会被添加到对象数组中?
-
对不起,应该更具体。如果他们在搜索中有多个元素,那么它将是 AND 而不是 OR,所以都是。
-
@Alnitak 数据源不是 JSON 对象,所以我必须先转换它才能使用 JSONPath。如果这最终是需要做的,那么我会沿着这条路走,但我会尽量保持简单。
-
@AndrewR jsonpath 作用于解析的 JSON 数据,它恰好是原生 JS 对象结构。
标签: javascript search object