【问题标题】:Javascript to remove an object from an array if one element in the object contains a string [duplicate]如果对象中的一个元素包含字符串,则从数组中删除对象的Javascript [重复]
【发布时间】:2020-06-01 12:58:21
【问题描述】:

我有一个对象数组,例如:

{
    "value": [
        {
            "attachment_text": "Support: hello there! I need some help syncing records",
            "ticket_text": "Ticket 1537 from ronburgundy@news.com"
        },
        {
            "attachment_text": "Copied from original request - 401 unathorized",
            "ticket_text": "Ticket 1459 from klaus.kinsky@kinsky.com"
        },
        {
            "attachment_text": "Contact request form received",
            "ticket_text": "Ticket 1173 from sophia@copolla.com"
        },
        {
            "attachment_text": "Hello, we need to troubleshoot some problems",
            "ticket_text": "Ticket 1591 from pat@pending.com"
        },
        {
            "attachment_text": "Contact request form received",
            "ticket_text": "Ticket 1483 from bugs@bunny.com"
        },
        {
            "attachment_text": "Contact request form received",
            "ticket_text": "Ticket 1393 from elmer@fudd.com"
        }
    ]
}

我可以使用什么 javascript 来删除 attachment_text 字段包含字符串“联系请求”的任何对象?

最好是纯javascript(即不是lodash之类的库)

【问题讨论】:

  • 到目前为止你尝试过什么?简单的.filter() 就可以了

标签: javascript arrays regex object


【解决方案1】:

您可以在 JavaScript 中使用数组对象的过滤方法。我在下面为您创建了一个演示:

var data = {
  "value": [{
      "attachment_text": "Support: hello there! I need some help syncing records",
      "ticket_text": "Ticket 1537 from ronburgundy@news.com"
    },
    {
      "attachment_text": "Copied from original request - 401 unathorized",
      "ticket_text": "Ticket 1459 from klaus.kinsky@kinsky.com"
    },
    {
      "attachment_text": "Contact request form received",
      "ticket_text": "Ticket 1173 from sophia@copolla.com"
    },
    {
      "attachment_text": "Hello, we need to troubleshoot some problems",
      "ticket_text": "Ticket 1591 from pat@pending.com"
    },
    {
      "attachment_text": "Contact request form received",
      "ticket_text": "Ticket 1483 from bugs@bunny.com"
    },
    {
      "attachment_text": "Contact request form received",
      "ticket_text": "Ticket 1393 from elmer@fudd.com"
    }
  ]
}

const result = data.value.filter((data) => !data["attachment_text"].includes("Contact request"))
console.log(result)

【讨论】:

    【解决方案2】:

    使用

    value.filter(x=>x.attachment_text.indexOf('Contact request') > -1);
    

    indexOf() 方法返回指定值在字符串中第一次出现的位置。

    如果要搜索的值从未出现,则此方法返回 -1。

    并且在每个浏览器上都能完美运行。

    【讨论】:

      【解决方案3】:

      您可以使用filter 方法,该方法会将导致特定条件的每个项目保留为true
      在您的情况下,条件可以是一个简单的 includes 方法来检查 "Contact request" 字符串是否存在。

      var d = {
        "value": [
          {
            "attachment_text": "Support: hello there! I need some help syncing records",
            "ticket_text": "Ticket 1537 from ronburgundy@news.com"
          },
          {
            "attachment_text": "Copied from original request - 401 unathorized",
            "ticket_text": "Ticket 1459 from klaus.kinsky@kinsky.com"
          },
          {
            "attachment_text": "Contact request form received",
            "ticket_text": "Ticket 1173 from sophia@copolla.com"
          },
          {
            "attachment_text": "Hello, we need to troubleshoot some problems",
            "ticket_text": "Ticket 1591 from pat@pending.com"
          },
          {
            "attachment_text": "Contact request form received",
            "ticket_text": "Ticket 1483 from bugs@bunny.com"
          },
          {
            "attachment_text": "Contact request form received",
            "ticket_text": "Ticket 1393 from elmer@fudd.com"
          }
        ]
      }
      
      // result contains what you desires
      var result = d.value.filter((d) => !d["attachment_text"].includes("Contact request"))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-09
        • 1970-01-01
        • 2016-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-14
        相关资源
        最近更新 更多