Javascript 搜索包含值的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请求中应该做的事情,而不是获取一个大对象,然后尝试通过客户端解析它吗

我正在寻找一种搜索JSON对象的方法,以检查它是否包含给定的值,如果它存在,则取消设置它

我的数据结构如下(注释并解释):

我在这个项目中使用下划线,我尝试过使用
.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();