簡體   English   中英

如何返回對象數組內的所有項目

[英]How to return all items inside array of object

我想回到我的內部陣列的所有項目item ,這是我的數組:

    var data =  [
      {
        "id": 275,
        "nome": "name",
        "item": [
          {
            "idCentro": 2,
            "date": "2018-06-05",
            "tipo": "D"
          },
          {
            "idCentro": 6,
            "date": "2017-06-05",
            "tipo": "G"
          },
          {
            "idCentro": 18,
            "date": "2016-06-05",
            "tipo": "G"
          },
          {
            "idCentro": 29,
            "date": "2019-06-05",
            "tipo": "D"
          }
        ]
      }
    ]

因此,要使所有項目都包含在item但它不起作用:

let listaT = data.filter(item => {
  return{
    idCentro: item.item.idCentro,
    date: item.item.date,
    tipo: item.item.tipo,
  }
})

我想得到這樣的回報:

[
  {
    "idCentro": 2,
    "date": "2018-06-05",
    "tipo": "D"
  },
  {
    "idCentroCusto": 6,
    "date": "2017-06-05",
    "tipo": "G"
  },
  {
    "idCentroCusto": 18,
    "date": "2016-06-05",
    "tipo": "G"
  },
  {
    "idCentroCusto": 29,
    "date": "2019-06-05",
    "tipo": "D"
  }
]

我該如何實現?

如果只想獲取項目數組,則只需要

var array = data[0].item

您可以平整所有項目數組。

  var data = [{ id: 275, nome: "name", item: [{ idCentro: 2, date: "2018-06-05", tipo: "D" }, { idCentro: 6, date: "2017-06-05", tipo: "G" }, { idCentro: 18, date: "2016-06-05", tipo: "G" }, { idCentro: 29, date: "2019-06-05", tipo: "D" }] }], result = data.reduce((r, { item }) => [...r, ...item], []); console.log(result); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

或采用即將推出的Array#flatMap

  var data = [{ id: 275, nome: "name", item: [{ idCentro: 2, date: "2018-06-05", tipo: "D" }, { idCentro: 6, date: "2017-06-05", tipo: "G" }, { idCentro: 18, date: "2016-06-05", tipo: "G" }, { idCentro: 29, date: "2019-06-05", tipo: "D" }] }], result = data.flatMap(({ item }) => item); console.log(result); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

Array.prototype.filter()方法創建一個新數組,其中所有元素都通過了由提供的函數實現的測試。 它不會修改數組項。

您可以使用Array.prototype.map()Array.prototype.flat()

 var data = [ { "id": 275, "nome": "name", "item": [ { "idCentro": 2, "date": "2018-06-05", "tipo": "D" }, { "idCentro": 6, "date": "2017-06-05", "tipo": "G" }, { "idCentro": 18, "date": "2016-06-05", "tipo": "G" }, { "idCentro": 29, "date": "2019-06-05", "tipo": "D" } ] } ] let listaT = data.map(({item}) => item).flat(); console.log(listaT); 

像這樣將Array#reduceArray#concat一起使用。 這也使用解構分配

reduce()方法在數組的每個成員上執行reducer函數(由您提供),從而產生單個輸出值。

 const data=[{"id":275,"nome":"name","item":[{"idCentro":2,"date":"2018-06-05","tipo":"D"},{"idCentro":6,"date":"2017-06-05","tipo":"G"},{"idCentro":18,"date":"2016-06-05","tipo":"G"},{"idCentro":29,"date":"2019-06-05","tipo":"D"}]}] const res = data.reduce((a, {item}) => a.concat(item), []); console.log(res); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM