3 回答

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊
.map方向是正確的。您需要將數(shù)據(jù)轉(zhuǎn)換為字符串,然后對(duì)它們進(jìn)行排序。
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))

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以使用.sort()
定義一個(gè)函數(shù)來(lái)比較您傳遞給的名稱.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;
});
請(qǐng)考慮不要像這樣格式化您的數(shù)據(jù),請(qǐng)執(zhí)行以下操作:
let names = [
? [
? ? { 'firstName': 'Rachel' },
? ? { 'age': 10 },
? ? { 'gender': 'female' }
? ]
];
在這種情況下,排序?qū)⑹穷愃频?,但不依賴于名稱數(shù)組中屬性的順序。
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;
});

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超8個(gè)贊
如果源數(shù)據(jù)真的只能是數(shù)組。
const names = [
[
['firstName', 'Rachel'],
['age', 10],
['gender', 'female'],
],
[
['firstName', 'Sam'],
['lastName', 'Smith'],
['age', 20],
['gender', 'male'],
],
];
const result = names.map(person => {
const name = person.reduce((obj, [index, value]) => {
obj[index] = value;
return obj;
}, {});
return `${name.firstName || ''} ${name.lastName || ''}`.trim();
});
console.log (result);
添加回答
舉報(bào)