Answer the question
In order to leave comments, you need to log in
How to sort an object by nested array?
[{
skills: [{
level: 22,
name: "Anna",
}, {
level: 31,
name: "Pasha"
}, {
level: 11,
name: "Igor"
}],
id: "1"
}, {
skills: [{
level: 2,
name: "Anna",
}, {
level: 35,
name: "Pasha"
}, {
level: 335,
name: "Igor"
}],
id: "2"
}, {
skills: [{
level: 101,
name: "Anna",
}, {
level: 77,
name: "Pasha"
}, {
level: 12,
name: "Igor"
}],
id: "3"
}]
[, {
skills: [{
level: 101,
name: "Anna",
}, {
level: 77,
name: "Pasha"
}, {
level: 12,
name: "Igor"
}],
id: "3"
}, {
skills: [{
level: 22,
name: "Anna",
}, {
level: 31,
name: "Pasha"
}, {
level: 11,
name: "Igor"
}],
id: "1"
}, {
skills: [{
level: 2,
name: "Anna",
}, {
level: 35,
name: "Pasha"
}, {
level: 335,
name: "Igor"
}],
id: "2"
}]
Answer the question
In order to leave comments, you need to log in
const newArray = arr.slice(); // так как sort мутирует массив, а нужен новый
const isAnnaSkill = skill => skill.name === 'Anna';
const getAnnaLevel = item => item.skills.find(isAnnaSkill)?.level;
newArray.sort((a, b) => getAnnaLevel(b) - getAnnaLevel(a));
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question