![](/img/trans.png)
[英]return object if his property matches all the items inside an array (ex ingredients for recipes)
[英]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#reduce与Array#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.