Javascript 搜索包含值的json对象键,然后将其取消设置
我正在寻找一种搜索JSON对象的方法,以检查它是否包含给定的值,如果它存在,则取消设置它 我的数据结构如下(注释并解释): 我在这个项目中使用下划线,我尝试过使用Javascript 搜索包含值的json对象键,然后将其取消设置,javascript,json,underscore.js,mlab,Javascript,Json,Underscore.js,Mlab,我正在寻找一种搜索JSON对象的方法,以检查它是否包含给定的值,如果它存在,则取消设置它 我的数据结构如下(注释并解释): 我在这个项目中使用下划线,我尝试过使用.pulk(tables,'seats')然后使用u.foreach,但我不得不嵌套多个uu.foreach语句来访问seats数组进行搜索,我不确定这是否是最佳做法。有没有我不知道的更简单的方法 此数据将从mongolab REST api返回。这是我在最初的XHR请求中应该做的事情,而不是获取一个大对象,然后尝试通过客户端解析它吗
.pulk(tables,'seats')
然后使用u.foreach,但我不得不嵌套多个uu.foreach语句来访问seats数组进行搜索,我不确定这是否是最佳做法。有没有我不知道的更简单的方法
此数据将从mongolab REST api返回。这是我在最初的XHR请求中应该做的事情,而不是获取一个大对象,然后尝试通过客户端解析它吗
如果这是一个SQL请求,我只需要做一些事情,比如选择tables.seats,其中guestId=XXX过去每当我遇到这种情况时,递归搜索函数总是非常宝贵的。。。下面是我的一个示例(我通过添加remove方法对其进行了扩展): 用法示例:
/// remove only the guestId object with a value '01'
o(tables)('*')('seats')('*')('guestId', '01').remove( true );
或:
或:
说明:
// Search within the 'seats' array for a given 'guestID', if it exists, unset it
tables = [
{
"_id":{
$oid: "one"
},
"seats":[
{ "guestId":"01" },
{ "guestId":"02" },
{ "guestId":"03" }
]
},
{
"_id":{
$oid: "two"
},
"seats":[
{ "guestId":"11" },
{ "guestId":"12" },
{ "guestId":"13" }
]
}
]
- 您必须始终从调用
开始o(my\u object\u to\u parse)
- 传递一个参数作为
搜索attributeName
- 传递两个参数作为
和attributeName
搜索attributeValue
充当一个简单的通配符,可用于处理基本数组*
可用作*
或属性名称
属性值
- 每个连续的请求都会将一个级别进一步移动到结构中
我已经有一段时间没有使用这段代码了,所以它可能不是100%没有bug或者是最佳的。然而,它似乎适用于您的特定用例。。。它也能处理我在测试时扔给它的所有东西。除了
.remove()
、.parent()
、.path()
和.alert()
之外,扩展更多的方法应该很容易,最好添加一些错误检查 过去每当我遇到这种情况时,递归搜索函数总是非常宝贵的。。。下面是我的一个示例(我通过添加remove方法对其进行了扩展):
用法示例:
/// remove only the guestId object with a value '01'
o(tables)('*')('seats')('*')('guestId', '01').remove( true );
或:
或:
说明:
// Search within the 'seats' array for a given 'guestID', if it exists, unset it
tables = [
{
"_id":{
$oid: "one"
},
"seats":[
{ "guestId":"01" },
{ "guestId":"02" },
{ "guestId":"03" }
]
},
{
"_id":{
$oid: "two"
},
"seats":[
{ "guestId":"11" },
{ "guestId":"12" },
{ "guestId":"13" }
]
}
]
- 您必须始终从调用
开始o(my\u object\u to\u parse)
- 传递一个参数作为
搜索attributeName
- 传递两个参数作为
和attributeName
搜索attributeValue
充当一个简单的通配符,可用于处理基本数组*
可用作*
或属性名称
属性值
- 每个连续的请求都会将一个级别进一步移动到结构中
我已经有一段时间没有使用这段代码了,所以它可能不是100%没有bug或者是最佳的。然而,它似乎适用于您的特定用例。。。它也能处理我在测试时扔给它的所有东西。除了
.remove()
、.parent()
、.path()
和.alert()
之外,扩展更多的方法应该很容易,最好添加一些错误检查 你到底在找什么?您的输入和所需的输出是什么?如果一张桌子包含所需的座位,您希望移除桌子还是移除座位?您到底在寻找什么?您的输入和所需的输出是什么?如果一张桌子包含所需的座位,您想移除桌子还是移除座位?
/// remove all 'guestIds' from the first seat
o(tables)(0)('seats')('*')('guestId').parent().remove();