按对象字段对数组排序

mwyxok5s  于 2021-09-23  发布在  Java
关注(0)|答案(3)|浏览(408)

我有一个对象数组
const myarray=[{name:'alex',job:'doctor'},{name:'john',job:'taxis driver'},{name:'marc',job:'taxis driver'},]
如何为每个作业打印作业名称,然后打印所有相应的对象?
例如,我希望能够显示:
医生:亚历克斯
出租车司机:约翰,马克

eiee3dmh

eiee3dmh1#

您可以尝试以下方法:

const myarray = [ { name: 'Alex', job: 'Doctor' }, { name: 'John', job: 'Taxi Driver' }, { name: 'Marc', job: 'Taxi Driver' } ]
const sorted = {}
myarray.forEach((e)=>{
  if(e.job in sorted){
    sorted[e.job].push(e.name);
  }else{
    sorted[e.job] = [e.name]
  }
})
console.log(sorted);

要以所需格式打印它们,请执行以下操作:

const myarray = [ { name: 'Alex', job: 'Doctor' }, { name: 'John', job: 'Taxi Driver' }, { name: 'Marc', job: 'Taxi Driver' } ]
const sorted = {}
myarray.forEach((e)=>{
  if(e.job in sorted){
    sorted[e.job].push(e.name);
  }else{
    sorted[e.job] = [e.name]
  }
})
for(const key in sorted){
  var str = key+': ';
  sorted[key].forEach(e=>str+=e+', ');
  console.log(str.slice(0, -2));
}
li9yvcax

li9yvcax2#

首先,创建对象,该对象将像 obj = {"Taxi driver": [],"Doctor": [] } 然后你就可以通过数组了 myarray.forEach(e => obj[e.job].append(e.name)) 之后只需操纵对象即可。顺致敬意,

zd287kbt

zd287kbt3#

它返回一个包含所需结果的对象

const myarray = [ { name: 'Alex', job: 'Doctor' }, { name: 'John', job: 'Taxi Driver' }, { name: 'Marc', job: 'Taxi Driver' }, ]

function getJobs() {
  let result = {};
  myarray.forEach(function t(e) {
    if (!result.hasOwnProperty(e.job))  result[e.job] = [];
    result[e.job].push(e.name);
  });
  return result;
}

console.log(getJobs());

相关问题