【问题标题】:How to apply filters to an array of JSON in JavaScript?如何将过滤器应用于 JavaScript 中的 JSON 数组?
【发布时间】:2019-01-31 08:38:24
【问题描述】:

我从我的控制器得到这个结果,并且想要捕获一些项目。 让我们看一些代码:

```
[
    {
    "id": 17,
    "corretora_id": 1,
    "user_id": 2,
    "order": null,
    "nome": "Johnny English",
    "telefone": "(11)0070-0070",
    "celular": "(00)70070-0700",
    "email": "j@mi7.uk",
    "obs": "É o homem mais burro do mundo. Mas quer o plano mais caro do Mundo  porque ele é rico",
    "img_lead": "1534353433.png",
    "created_at": "2018-08-15 17:17:14",
    "updated_at": "2018-08-15 21:30:48",
    "atendimentos": [
        {
        "id": 22,
        "lead_id": 17,
        "dataAgendamento": "2018-08-16 09:00:00",
        "user_id": 2,
        "comentarios": "Realmente é o homem mais burro do mundo. QUer um plano  de saúde para agentes secretos em nome de 007.\nPediu pra ligar amanhã",
        "created_at": "2018-08-15 20:48:07",
        "updated_at": "2018-08-15 20:48:07"
        },  
        {
        "id": 27,
        "lead_id": 17,
        "dataAgendamento": "2018-08-17 12:00:00",
        "user_id": 2,
        "comentarios": "Teste",
        "created_at": "2018-08-17 18:49:36",
        "updated_at": "2018-08-17 18:49:36"
        },
        {
        "id": 28,
        "lead_id": 17,
        "dataAgendamento": "2018-08-25 19:34:00",
        "user_id": 2,
        "comentarios": "Esse tem que estar em cima quando reload",
        "created_at": "2018-08-18 14:28:24",
        "updated_at": "2018-08-18 14:28:24"
        }
    ]
},
```

我需要读取 obj id:17 中的所有项目以及“atendimentos”节点内的子项目,例如“lead_id”和“dataAgenmento”。

我该怎么做?

【问题讨论】:

  • 顺便说一句,您想在 js 或 html 中的模板中阅读它吗?
  • 这个问题是针对 laravel 还是 javascript?
  • 这是给 Laravel @Ouluwatobi

标签: javascript arrays node.js ecmascript-6 ecmascript-2017


【解决方案1】:

首先你需要展平数组,试试这个函数:

flatten(arr, result = []){
    for (var i = 0, length = arr.length; i < length; i++) {
      var value = arr[i];
      if (Array.isArray(value)) {
        flatten(value, result);
      } else {
        result.push(value);
      }
    }
    return result;
  }

【讨论】:

    【解决方案2】:

    您可以通过以下方式这样做:

    var a = [];//your array variable
    
    a.filter(key =>key.id===17)[0].atendimentos.filter(key=>key.lead_id===17)
    //This will give following 
    [ { id: 22,
        lead_id: 17,
        dataAgendamento: '2018-08-16 09:00:00',
        user_id: 2,
        comentarios: 'Realmente é o homem mais burro do mundo. QUer um plano  de saúde para agentes secretos em nome de 007.\nPediu pra ligar amanhã',
        created_at: '2018-08-15 20:48:07',
        updated_at: '2018-08-15 20:48:07' },
    { id: 27,
        lead_id: 17,
        dataAgendamento: '2018-08-17 12:00:00',
        user_id: 2,
        comentarios: 'Teste',
        created_at: '2018-08-17 18:49:36',
        updated_at: '2018-08-17 18:49:36' },
    { id: 28,
        lead_id: 17,
        dataAgendamento: '2018-08-25 19:34:00',
        user_id: 2,
        comentarios: 'Esse tem que estar em cima quando reload',
        created_at: '2018-08-18 14:28:24',
        updated_at: '2018-08-18 14:28:24' } ]
    

    您可以使用 ES5 和 ES6 进行大量的数组操作。了解更多功能请关注developer.mozilla.org docs

    【讨论】:

      猜你喜欢
      • 2019-11-29
      • 1970-01-01
      • 2011-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多