Javascript |从对象数组中删除不需要的数据
我只需要数组对象中的第一年和最后一年元素 示例这是数据(已排序,所以我不想弄乱它): 我希望所有的中年都是这样:Javascript |从对象数组中删除不需要的数据,javascript,arrays,object,Javascript,Arrays,Object,我只需要数组对象中的第一年和最后一年元素 示例这是数据(已排序,所以我不想弄乱它): 我希望所有的中年都是这样: [ { make: 'audi', model: 'rs5', year: '2013' }, { make: 'audi', model: 'r8', year: '2020' }, { make: 'ford', model: 'mustang', year: '2012' }, { make: 'ford', model: 'mustang', year: '2
[
{ make: 'audi', model: 'rs5', year: '2013' },
{ make: 'audi', model: 'r8', year: '2020' },
{ make: 'ford', model: 'mustang', year: '2012' },
{ make: 'ford', model: 'mustang', year: '2033' },
{ make: 'kia', model: 'optima', year: '2010' },
{ make: 'kia', model: 'optima', year: '2040' }
]
您可以在数组中循环并保存具有最大和最小年份的数组,如下所示:
let数据=[
{品牌:奥迪,型号:rs5,年份:2013},
{品牌:奥迪,车型:rs5,年份:2015},
{品牌:奥迪,车型:r8,年份:2020},
{品牌:'ford',车型:'mustang',年份:'2012'},
{品牌:'ford',车型:'fusion',年份:'2015'},
{品牌:'ford',车型:'mustang',年份:'2033'},
{品牌:'kia',型号:'optima',年份:'2010'},
{品牌:'kia',型号:'optima',年份:'2012'},
{品牌:'kia',型号:'optima',年份:'2020'},
{品牌:'kia',型号:'optima',年份:'2030'},
{品牌:'kia',型号:'optima',年份:'2040'}
];
设a={};
对于(设i=0;i数据[i]。年){
a[data[i].make].min=data[i];
}
}
让输出=[];
Object.keys(a).forEach(make=>{
push(a[make].min);
输出.push(一个[make].max);
});
console.dir(输出)代码>您可以在数组中循环并保存具有最大和最小年份的数组,如下所示:
let数据=[
{品牌:奥迪,型号:rs5,年份:2013},
{品牌:奥迪,车型:rs5,年份:2015},
{品牌:奥迪,车型:r8,年份:2020},
{品牌:'ford',车型:'mustang',年份:'2012'},
{品牌:'ford',车型:'fusion',年份:'2015'},
{品牌:'ford',车型:'mustang',年份:'2033'},
{品牌:'kia',型号:'optima',年份:'2010'},
{品牌:'kia',型号:'optima',年份:'2012'},
{品牌:'kia',型号:'optima',年份:'2020'},
{品牌:'kia',型号:'optima',年份:'2030'},
{品牌:'kia',型号:'optima',年份:'2040'}
];
设a={};
对于(设i=0;i数据[i]。年){
a[data[i].make].min=data[i];
}
}
让输出=[];
Object.keys(a).forEach(make=>{
push(a[make].min);
输出.push(一个[make].max);
});
console.dir(输出)代码>您可以通过make分隔数组,然后获取每个make的第一个和最后一个值:
const arr=[
{品牌:奥迪,型号:rs5,年份:2013},
{品牌:奥迪,车型:rs5,年份:2015},
{品牌:奥迪,车型:r8,年份:2020},
{品牌:'ford',车型:'mustang',年份:'2012'},
{品牌:'ford',车型:'fusion',年份:'2015'},
{品牌:'ford',车型:'mustang',年份:'2033'},
{品牌:'kia',型号:'optima',年份:'2010'},
{品牌:'kia',型号:'optima',年份:'2012'},
{品牌:'kia',型号:'optima',年份:'2020'},
{品牌:'kia',型号:'optima',年份:'2030'},
{品牌:'kia',型号:'optima',年份:'2040'}
]
const grouped=arr.reduce((a,el)=>(a[el.make]?a[el.make].push(el):a[el.make]=[el],a),{})
const out=Object.values(grouped).reduce((a,group)=>(a.push(group[0],group[group.length-1]),a),[])
console.log(out)
您只需按make分隔数组,然后获取每个make的第一个和最后一个值:
const arr=[
{品牌:奥迪,型号:rs5,年份:2013},
{品牌:奥迪,车型:rs5,年份:2015},
{品牌:奥迪,车型:r8,年份:2020},
{品牌:'ford',车型:'mustang',年份:'2012'},
{品牌:'ford',车型:'fusion',年份:'2015'},
{品牌:'ford',车型:'mustang',年份:'2033'},
{品牌:'kia',型号:'optima',年份:'2010'},
{品牌:'kia',型号:'optima',年份:'2012'},
{品牌:'kia',型号:'optima',年份:'2020'},
{品牌:'kia',型号:'optima',年份:'2030'},
{品牌:'kia',型号:'optima',年份:'2040'}
]
const grouped=arr.reduce((a,el)=>(a[el.make]?a[el.make].push(el):a[el.make]=[el],a),{})
const out=Object.values(grouped).reduce((a,group)=>(a.push(group[0],group[group.length-1]),a),[])
console.log(out)
您可以通过查找倒数第二个项目来减少数组,如果它与实际对象具有相同的make
,则更新最后一个索引
否则,将对象推送到结果集
这种方法使用按make
和year
排序的数组
var数据=[{make:'audi',model:'rs5',year:'2013'},{make:'audi',model:'rs5',year:'2015'},{make:'audi',model:'r8',year:'2020'},{make:'ford',model:'rs5',year:'2015'},{make:'ford:'ford',model:'mustang:'2033'},{make:'kia',model:'optima:'2010'},{make:'kia',model:'optima',year:'2012'},{make:'kia',model:'optima',year:'2020'},{make:'kia',model:'optima',year:'2030'},{make:'kia',model:'optima year:'2040'},
结果=数据。减少((r,o)=>{
如果((r[r.length-2]|{}).make==o.make)r[r.length-1]=o;
否则r.push(o);
返回r;
}, []);
控制台日志(结果)代码>
.as console wrapper{max height:100%!important;top:0;}
您可以通过查找倒数第二个项来减少数组,如果它与实际对象具有相同的make
,则更新最后一个索引
否则,将对象推送到结果集
这种方法使用按make
和year
排序的数组
var数据=[{make:'audi',model:'rs5',year:'2013'},{make:'audi',model:'rs5',year:'2015'},{make:'audi',model:'r8',year:'2020'},{make:'ford',model:'rs5',year:'2015'},{make:'ford:'ford',model:'mustang:'2033'},{make:'kia',model:'optima:'2010'},{make:'kia',model:'optima',year:'2012'},{make:'kia',model:'optima',year:'2020'},{make:'kia',model:'optima',year:'2030'},{make:'kia',model:'optima year:'2040'},
结果=数据。减少((r,o)=>{
如果((r[r.length-2]|{}).make==o.make)r[r.length-1]=o;
否则r.push(o
[
{ make: 'audi', model: 'rs5', year: '2013' },
{ make: 'audi', model: 'r8', year: '2020' },
{ make: 'ford', model: 'mustang', year: '2012' },
{ make: 'ford', model: 'mustang', year: '2033' },
{ make: 'kia', model: 'optima', year: '2010' },
{ make: 'kia', model: 'optima', year: '2040' }
]
const arr = [1,2,3,4,5];
console.log(arr.filter((i) => {
// A Condition, if true it's displayed if not it's discarded
return i > 2;
}));
var newcar = [];
var myvar = [];
for (var i=0; i<(car.length)-1; i++) {
if(car[i].make == car[i+1].make)
{
myvar.push(car[i]);
if(i+1 == car.length-1)
{
myvar.push(car[i+1]);
newcar.push(myvar[0]);
var lastitem = myvar.pop();
newcar.push(lastitem);
}
}
else
{
myvar.push(car[i]);
newcar.push(myvar[0]);
var lastitem = myvar.pop();
newcar.push(lastitem);
myvar = [];
}
}