Javascript 基于现有对象创建新的对象数组,无重复
我想我想要的不是什么特别的东西,我只是不知道该怎么做。我有一个对象数组-Javascript 基于现有对象创建新的对象数组,无重复,javascript,json,Javascript,Json,我想我想要的不是什么特别的东西,我只是不知道该怎么做。我有一个对象数组- { "year": 2016, "some stuff": "bla0", "other stuff": 20 }, "year": 2017, "some stuff": "bla1", "other stuff": 21 }, "year": 2016, "some stuff": "bla2", "other stuff": 22 } 我
{
"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代码在相关的JS行上,从167开始。如果您能帮助我理清思路,我们将不胜感激。请使用reduce函数
var数组=[{年份:2016,某些内容:bla0,其他内容:20},{年份:2017,某些内容:bla1,其他内容:21},{年份:2016,某些内容:bla2,其他内容:22}]
var result=array.reducea,c=>{
如果是[c.year]a[c.year].pushc;
否则a[c.年]=[c];
返回a;
}, {};
console.logresult;
.as控制台包装{max height:100%!important;top:0;}使用函数reduce
var数组=[{年份:2016,某些内容:bla0,其他内容:20},{年份:2017,某些内容:bla1,其他内容:21},{年份:2016,某些内容:bla2,其他内容:22}]
var result=array.reducea,c=>{
如果是[c.year]a[c.year].pushc;
否则a[c.年]=[c];
返回a;
}, {};
console.logresult;
.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演示:您想按年份对对象数组进行分组吗?您可以执行以下操作:
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演示:
var objArray=[{
年份:2016年,
一些东西:废话,
其他资料:20
},{
年份:2017年,
一些东西:bla1,
其他资料:21
},{
年份:2016年,
一些东西:bla2,
其他资料:22
}];
var newObjArray={};
objArray.forEachfunctionitem{
风险值年=项目年;
如果!newObjArray.hasOwnPropertyyear{
newObjArray[年度]=[项目];
}否则{
newObjArray[year].pushitem;
}
};
console.lognewObjArray
var objArray=[{
年份:2016年,
一些东西:废话,
其他资料:20
},{
年份:2017年,
一些东西:bla1,
其他资料:21
},{
年份:2016年,
一些东西:bla2,
其他资料:22
}];
var newObjArray={};
objArray.forEachfunctionitem{
风险值年=项目年;
如果!newObjArray.hasOwnPropertyyear{
newObjArray[年度]=[项目];
}否则{
newObjArray[year].pushitem;
}
};
console.lognewObjArray 您可以使用forEach循环现有数组,并将year作为akey添加到新对象 var oldArr=[{ 年份:2016年, 一些东西:废话, 其他资料:20 }, { 年份:2017年, 一些东西:bla1, 其他资料:21 }, { 年份:2016年, 一些东西:bla2, 其他资料:22 }] var newObj={}; oldArr.forEachfunctionitem{ 如果newObj.haownPropertyItem.year{ newObj[item.year].pushitem }否则{ newObj[项目年份]=[]; newObj[item.year].pushitem } }; console.lognewObj
我想从上面创建以下对象数组。您可以使用forEach循环现有数组,并将year作为akey添加到新对象 var oldArr=[{ 年份:2016年, 一些东西:废话, 其他资料:20 }, { 年份:2017年, 一些东西:bla1, 其他资料:21 }, { 年份:2016年, 一些东西:bla2, 其他资料:22 }] var newObj={}; oldArr.forEachfunctionitem{ 如果newObj.haownPropertyItem.year{ newObj[item.year].pushitem }否则{ newObj[项目年份]=[]; newObj[item.year].pushitem } }; console.lognewObj
我想从上面创建以下对象数组。若要获得预期结果,请使用下面的“使用贴图”选项
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)
要达到预期的效果,请使用下面的使用地图选项
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)
可能创建一个新对象,然后使用迭代数组中的每个项目并检查年份-然后查看该年份是否作为属性存在于新对象中。如果不是,则为该年创建一个属性,并将数组指定为值。然后,将forEach中的当前对象推送到新对象中该属性处的数组中。另外,顺便说一句,链接到整个项目是不受欢迎的。阅读。可能创建一个新对象,然后使用迭代数组中的每个项目并检查年份-然后查看该年份是否作为属性存在于新对象中。如果不是,则为该年创建一个属性,并将数组指定为值。然后,将forEach中的当前对象推送到新对象中该属性处的数组中。另外,顺便说一句,链接到整个项目是不受欢迎的。读,太好了!谢谢你,埃莱。这正是我想要的。其他的都很好,这就是为什么我选了正确的解决方案。太好了!谢谢你,埃莱。这正是我想要的。其他的都很好,这就是为什么我投票选出了正确的解决方案。