按对象字段对数组进行排序

时间:2021-07-09 19:31:20

标签: javascript arrays sorting

我有一个对象数组

<块引用>

const myarray = [ { name: '亚历克斯', 工作:'医生'},{ name: '约翰', 工作:'出租车司机'},{ name: '马克', 工作:'出租车司机' }, ]

我如何为每个作业打印作业名称,然后打印所有对应的对象?

例如我希望能够显示:

医生: 亚历克斯

出租车司机: 约翰, 马克

3 个答案:

答案 0 :(得分:1)

首先创建对象,它将存储像 obj = {"Taxi driver": [],"Doctor": [] } 这样的作业,然后您可以在操作对象后传递数组 myarray.forEach(e => obj[e.job].append(e.name))。最好的问候

答案 1 :(得分:1)

它返回一个你想要的结果的对象

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());

答案 2 :(得分:1)

你可以试试这样的:

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));
}

相关问题