gpt4 book ai didi

javascript - 如何以 jQuery 方式搜索和操作复杂的 JavaScript 对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:21:28 26 4
gpt4 key购买 nike

在 Web 应用程序的上下文中,我有一个服务器,它根据来自客户端的输入发送或接收 JSON 字符串。在客户端消费时,这些 JSON 字符串会立即转换为 JavaScript 对象,它们将在其中作为对象存在。这些对象不是数组;它们代表复杂的、任意的数据模型,其中的每个属性都可以有任意数量的唯一子属性或对象。

var myView = {
name: 'root'
id: 'root_0'
children: {
child_1: {
arbitraryid: 'root_0_child_1',
type: 'Department',
name: 'Produce',
quadrant: 1,
children: {
child_1: {
arbitraryid: 'root_0_child_1_child_1',
type: 'Aisle',
number: 3,
length: 12,
children: { }
}
}
},
child_2: {
arbitraryid: 'root_0_child_2',
name: 'West',
type: 'Region',
children: {
child_1: {
arbitraryid: 'root_0_child_2_child_1',
name: 'Wegmans',
type: 'Store',
children: {
child_1: {
arbitraryid: 'root_0_child_2_child_1_child_1',
type: 'Department',
children: { }
}
}
}
}
}
}
};

当我构建 JSON 字符串服务器端时,我保证所有对象都将具有“children”和“arbitraryid”属性;但其他一切都是动态生成的,属性和值是完全任意的。

如果这是 XML,我可以使用 jQuery var someChild = myView.find('#root_0_child_1_child_1')。这将使我得到一个 jQuery 对象,其中包含查找的结果,不仅是对 myView 的引用,而且是一个位置,从该位置可以全向移动通过对象:var someChild = myView.find('#root_0_child_1_child_1').parent().

是否存在一个实用程序来解决 native JavaScript 对象的这个问题,或者是否有更好的方法/方法来解决这个问题?我想避免编写一堆这种类型的代码来简单地获取我的属性,然后可能再次循环以更新父对象。

while (obj.hasOwnProperty('children')) {
for (var child in obj) {
//..etc, etc
}
}

我在这个主题上看到的大多数 SO 问题都是 with searching arrays , frequently with predictable data table style construction .

映射是可能的,但这些对象很快就会变得很深,而且这个选项似乎比哑循环好不了多少。

想法?

编辑:滚动我自己的实用程序类。

我仍在探索其他库/实用程序,但我编写了一个通用帮助程序类来进行搜索:

ObjectHelper

虽然有用,但我认为它说明了获得其他类似 jQuery 的功能的一些困难。我不仅想要搜索,而且还希望能够向上/向下爬行对象属性结构,类似于将 .parent().children().find() 运算符链接在一起的方式。可行,但复杂。

最佳答案

我发现了一些 JSON 查询语言:

This page总结它们并分析它们的优缺点。

还有一个用于查询 JSON 的 DOJO 模块:

不过我不确定它们有多稳定/标准。

关于javascript - 如何以 jQuery 方式搜索和操作复杂的 JavaScript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7094563/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com