Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript |从对象数组中删除不需要的数据_Javascript_Arrays_Object - Fatal编程技术网

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 = [];
    }
}