I have an object where each key have an array of multiple objects. I want to get only the last item from each array.
I tried to push only last element inside a new array but the problem is that now it doesn't say which object belong to which class.
let data = { "classA": [ { date: '01-01', present: 49, absent: 14 }, { date: '02-01', present: 39, absent: 24 }, { date: '03-01', present: 35, absent: 28 } ], "classB": [ { date: '01-01', present: 49, absent: 14 }, { date: '02-01', present: 39, absent: 24 }, { date: '03-01', present: 35, absent: 28 } ], "classC": [ { date: '01-01', present: 49, absent: 14 }, { date: '02-01', present: 39, absent: 24 }, { date: '03-01', present: 35, absent: 28 } ] } let newData = []; for (let [key, value] of Object.entries(data)) { newData.push(value[value.length - 1]); } console.log(newData);
Is there anyway to push class name inside each object and get result something like this.
[
{
"class": "ClassA",
"date": "03-01",
"present": 35,
"absent": 28
},
{
"class": "ClassB",
"date": "03-01",
"present": 35,
"absent": 28
},
{
"class": "ClassC",
"date": "03-01",
"present": 35,
"absent": 28
}
]
One way is to use Object.assign
newData.push(Object.assign({class:key}, value[value.length -1]))
But, more a modern method, using spread in object literals syntax makes it (I think) easier to read
newData.push({class:key, ...value[value.length - 1]});
let data = {"classA":[{"date":"01-01","present":49,"absent":14},{"date":"02-01","present":39,"absent":24},{"date":"03-01","present":35,"absent":28}],"classB":[{"date":"01-01","present":49,"absent":14},{"date":"02-01","present":39,"absent":24},{"date":"03-01","present":35,"absent":28}],"classC":[{"date":"01-01","present":49,"absent":14},{"date":"02-01","present":39,"absent":24},{"date":"03-01","present":35,"absent":28}]} let newData = []; for (let [key, value] of Object.entries(data)) { newData.push({class:key, ...value[value.length - 1]}); } console.log(newData);
let data = {
"classA": [
{
date: '01-01',
present: 49,
absent: 14
},
{
date: '02-01',
present: 39,
absent: 24
},
{
date: '03-01',
present: 35,
absent: 28
}
],
"classB": [
{
date: '01-01',
present: 49,
absent: 14
},
{
date: '02-01',
present: 39,
absent: 24
},
{
date: '03-01',
present: 35,
absent: 28
}
],
"classC": [
{
date: '01-01',
present: 49,
absent: 14
},
{
date: '02-01',
present: 39,
absent: 24
},
{
date: '03-01',
present: 35,
absent: 28
}
]
}
let newData = [];
for (let [key, value] of Object.entries(data)) {
newData.push(value[value.length - 1]);
newData[newData.length-1].class=key
}
console.log(newData);
You can do like this also
let result = Object.entries(data).map(data => {
return { class: data[0], ...data[1][data[1].length - 1] };
});
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.