[英]Creating a new array of objects from an existing object based no duplication
我不认为我想要什么有什么特别的,我只是不知道该怎么做。 我有一系列对象-
{
"year": 2016,
"some stuff": "bla0",
"other stuff": 20
},
"year": 2017,
"some stuff": "bla1",
"other stuff": 21
},
"year": 2016,
"some stuff": "bla2",
"other stuff": 22
}
我想从上面创建以下对象数组。
{
"2016": [
{
"year": 2016,
"some stuff": "bla0",
"other stuff": 20
},
{
"year": 2016,
"some stuff": "bla2",
"other stuff": 22
}
],
"2017": [
{
"year": 2017,
"some stuff": "bla1",
"other stuff": 21
}
]
}
我当前的WIP代码位于https://codepen.io/sharperwebdev/pen/aqQQZy/?editors=1011相关的JS行,从167开始。希望我对此有所思考的任何帮助。
使用功能reduce
var array = [{ "year": 2016, "some stuff": "bla0", "other stuff": 20 }, { "year": 2017, "some stuff": "bla1", "other stuff": 21 }, { "year": 2016, "some stuff": "bla2", "other stuff": 22 }] var result = array.reduce((a, c) => { if (a[c.year]) a[c.year].push(c); else a[c.year] = [c]; return a; }, {}); console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
您想按年份对对象数组进行分组? 您可以执行以下操作:
const data = [{
"year": 2016,
"some stuff": "bla0",
"other stuff": 20
}, {
"year": 2017,
"some stuff": "bla1",
"other stuff": 21
}, {
"year": 2016,
"some stuff": "bla2",
"other stuff": 22
}];
function groupBy(data, key) {
return data.reduce((result, item) => {
result[item[key]] = result[item[key]] || [];
result[item[key]].push(item);
return result;
}, {});
}
groupBy(data, 'year');
jsbin演示: http ://jsbin.com/jifozivuve/edit?js,控制台
var objArray=[{ "year": 2016, "some stuff": "bla0", "other stuff": 20 },{ "year": 2017, "some stuff": "bla1", "other stuff": 21 },{ "year": 2016, "some stuff": "bla2", "other stuff": 22 }]; var newObjArray={}; objArray.forEach(function(item){ var year=item.year; if(!newObjArray.hasOwnProperty(year)){ newObjArray[year]=[item]; }else{ newObjArray[year].push(item); } }); console.log(newObjArray);
您可以使用forEach
循环现有数组,然后将year作为关键字添加到新对象。
var oldArr = [{ "year": 2016, "some stuff": "bla0", "other stuff": 20 }, { "year": 2017, "some stuff": "bla1", "other stuff": 21 }, { "year": 2016, "some stuff": "bla2", "other stuff": 22 }] var newObj = {}; oldArr.forEach(function(item) { if (newObj.hasOwnProperty(item.year)) { newObj[item.year].push(item) } else { newObj[item.year] = []; newObj[item.year].push(item) } }); console.log(newObj)
I want to create the following array of objects from the above.
为了达到预期的效果,请使用以下使用地图选项
var x = [{
"year": 2016,
"some stuff": "bla0",
"other stuff": 20
},{
"year": 2017,
"some stuff": "bla1",
"other stuff": 21
},{
"year": 2016,
"some stuff": "bla2",
"other stuff": 22
}]
var y =[]
x.map(function(e){
var temp ={}
temp[e.year] = e
y.push(temp)
})
console.log(y)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.