Как отсортировать массив от объекта? Код :
let A = [ { text: '故事', value: 'story', },
{ text: '诗歌', value: 'poetry', },
{ text: '励志', value: 'inspirational', }
];
// array B from backend**
let B = {
story: 2,
poetry: 34,
inspirational: 30,
};
Я хочу получить вот это:
[
{ text: '诗歌', value: 'poetry', },
{ text: '励志', value: 'inspirational'},
{ text: '故事', value: 'story', },
];
A.sort((a, b) => B[b.value] - B[a.value]) для самых маленьких



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Просто вы можете использовать функцию JavaScript Сортировать.
Примечание: При сортировке чисел вы можете просто использовать компактное сравнение:
Compact Comparison:: myArray.sort((n1,n2) => n1 - n2);
let A = [ { text: '故事', value: 'story', },
{ text: '诗歌', value: 'poetry', },
{ text: '励志', value: 'inspirational', }
];
// array B from backend**
let B = {
story: 2,
poetry: 34,
inspirational: 30,
};
A.sort((a, b) => B[b.value]-B[a.value] );
console.info(A);Вы можете использовать стрелочную функцию в array.sort в качестве настраиваемого компаратора. Сортировка в обратном порядке выполняется путем индексации объекта B для извлечения значения сортировки для сравниваемых элементов и вычитания значения a из b.
let A = [
{ text: '故事', value: 'story', },
{ text: '诗歌', value: 'poetry', },
{ text: '励志', value: 'inspirational', }
];
let B = {
story: 2,
poetry: 34,
inspirational: 30,
};
const sorted = A.sort((a, b) => B[b.value] - B[a.value]);
console.info(sorted);Вы можете использовать sort() для упорядочивания элементов массива. Вы можете использовать Number.NEGATIVE_INFINITY как значение по умолчанию, если value не существует на B. Это оставит неопределенное значение последним.
let A = [{"text":"诗歌","value":"poetry"},{"text":"励志","value":"inspirational"},{"text":"故事","value":"story"}];
let B = {"story":2,"poetry":34,"inspirational":30};
A.sort((x, y) => (B[y.value] || Number.NEGATIVE_INFINITY) - (B[x.value] || Number.NEGATIVE_INFINITY));
console.info(A);Попробуйте это, он использует функцию стрелки и array.sort:
let A = [{
text: '故事',
value: 'story',
},
{
text: '诗歌',
value: 'poetry',
},
{
text: '励志',
value: 'inspirational',
}
];
// array B from backend**
let B = {
story: 2,
poetry: 34,
inspirational: 30,
};
A.sort((a, b) => B[b.value] - B[a.value]);
console.info(A);Используя функцию Array.prototype.sort, вы можете достичь желаемого результата.
Этот B[bV] - B[aV] вернет значение меньше, чем 0, или больше, чем 0, или равное 0, что и ожидает функция sort, чтобы найти элементы по определенному индексу в соответствии с их значением из объекта B.
let A = [{ text: '故事', value: 'story', }, { text: '诗歌', value: 'poetry', }, { text: '励志', value: 'inspirational', }],
B = { story: 2, poetry: 34, inspirational: 30};
A.sort(({value: aV}, {value: bV}) => B[bV] - B[aV]);
console.info(A);.as-console-wrapper { max-height: 100% !important; top: 0; }
Итак, вы пытаетесь отсортировать от наибольшего к наименьшему на основе значения свойства объекта, который вы получаете?