将数组中的名称按升序排序

例如,当给出一个名称数组时,


let names = [

  [

    ['firstName', 'Rachel'],

    ['age', 10],

    ['gender', 'female'],

  ],

  [

    ['firstName', 'Sam'],

    ['lastName', 'Smith'],

    ['age', 20],

    ['gender', 'male'],

  ],

];

输出应类似于以下代码。


let output = nameInOrder(names);

console.log(output); // --> ['Rachel', 'Sam Smith'];

为了让我完成nameInOrder的功能,


function nameInOrder(arr) {

// my code goes here

}

.map我首先将形式更改为数组中的对象合适吗sort(a,b)?.map.join(' ')你会如何按升序对它们进行排序?


撒科打诨
浏览 179回答 3
3回答

慕妹3146593

.map方向是正确的。您需要将数据转换为字符串,然后对它们进行排序。let people = [  [    ['firstName', 'Rachel'],    ['age', 10],    ['gender', 'female'],  ],  [    ['firstName', 'Sam'],    ['lastName', 'Smith'],    ['age', 20],    ['gender', 'male'],  ],];function nameInOrder(arr) {  return arr.map(person => {    const fields = person.map(entry => entry[0])    if (fields.includes('firstName') && fields.includes('lastName')) {      return [        person.find(entry => entry[0] == 'firstName')[1],        person.find(entry => entry[0] == 'lastName')[1],      ].join(' ')    } else if (fields.includes('firstName')) {      return person.find(entry => entry[0] == 'firstName')[1]    } else if (fields.includes('lastName')) {      return person.find(entry => entry[1] == 'lastName')[1]    } else {      return ''    }  }).sort()}console.log(nameInOrder(people))

拉丁的传说

您可以使用.sort()定义一个函数来比较您传递给的名称.sort()。names.sort((a,b) => {  var nameA = a[0][1].toUpperCase(); // ignore upper and lowercase  var nameB = b[0][1].toUpperCase(); // ignore upper and lowercase  if (nameA < nameB) {    return -1;  }  if (nameA > nameB) {    return 1;  }  // names must be equal  return 0;});请考虑不要像这样格式化您的数据,请执行以下操作:let names = [  [    { 'firstName': 'Rachel' },    { 'age': 10 },    { 'gender': 'female' }  ]];在这种情况下,排序将是类似的,但不依赖于名称数组中属性的顺序。names.sort((a,b) => {  var nameA = a.firstName.toUpperCase(); // ignore upper and lowercase  var nameB = b.firstName.toUpperCase(); // ignore upper and lowercase  if (nameA < nameB) {    return -1;  }  if (nameA > nameB) {    return 1;  }  // names must be equal  return 0;});

守着星空守着你

如果源数据真的只能是数组。const names = [&nbsp; [&nbsp; &nbsp; ['firstName', 'Rachel'],&nbsp; &nbsp; ['age', 10],&nbsp; &nbsp; ['gender', 'female'],&nbsp; ],&nbsp; [&nbsp; &nbsp; ['firstName', 'Sam'],&nbsp; &nbsp; ['lastName', 'Smith'],&nbsp; &nbsp; ['age', 20],&nbsp; &nbsp; ['gender', 'male'],&nbsp; ],];const result = names.map(person => {&nbsp; &nbsp; const name = person.reduce((obj, [index, value]) => {&nbsp; &nbsp; &nbsp; &nbsp; obj[index] = value;&nbsp; &nbsp; &nbsp; &nbsp; return obj;&nbsp; &nbsp; &nbsp; }, {});&nbsp; &nbsp; return `${name.firstName || ''} ${name.lastName || ''}`.trim();});console.log (result);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript